Skip to content

Commit 9f083b9

Browse files
committed
Code cleanup, change word=>uint16_t
1 parent c23e6a4 commit 9f083b9

File tree

5 files changed

+71
-91
lines changed

5 files changed

+71
-91
lines changed

.gitmodules

Whitespace-only changes.

src/Modbus.cpp

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55
#include "Modbus.h"
66

7-
word cbDefault(TRegister* reg, word val) {
7+
uint16_t cbDefault(TRegister* reg, uint16_t val) {
88
return val;
99
}
1010

@@ -13,7 +13,7 @@ Modbus::Modbus() {
1313
_regs_last = 0;
1414
}
1515

16-
TRegister* Modbus::searchRegister(word address) {
16+
TRegister* Modbus::searchRegister(uint16_t address) {
1717
TRegister *reg = _regs_head;
1818
//if there is no register configured, bail
1919
if(reg == 0) return(0);
@@ -26,7 +26,7 @@ TRegister* Modbus::searchRegister(word address) {
2626
return(0);
2727
}
2828

29-
void Modbus::addReg(word address, word value) {
29+
void Modbus::addReg(uint16_t address, uint16_t value) {
3030
TRegister *newreg;
3131

3232
newreg = (TRegister *) malloc(sizeof(TRegister));
@@ -47,7 +47,7 @@ void Modbus::addReg(word address, word value) {
4747
}
4848
}
4949

50-
bool Modbus::Reg(word address, word value) {
50+
bool Modbus::Reg(uint16_t address, uint16_t value) {
5151
TRegister *reg;
5252
//search for the register address
5353
reg = this->searchRegister(address);
@@ -59,7 +59,7 @@ bool Modbus::Reg(word address, word value) {
5959
return false;
6060
}
6161

62-
word Modbus::Reg(word address) {
62+
uint16_t Modbus::Reg(uint16_t address) {
6363
TRegister *reg;
6464
reg = this->searchRegister(address);
6565
if(reg)
@@ -68,65 +68,65 @@ word Modbus::Reg(word address) {
6868
return(0);
6969
}
7070

71-
void Modbus::addHreg(word offset, word value) {
71+
void Modbus::addHreg(uint16_t offset, uint16_t value) {
7272
this->addReg(offset + HREG_BASE, value);
7373
}
7474

75-
bool Modbus::Hreg(word offset, word value) {
75+
bool Modbus::Hreg(uint16_t offset, uint16_t value) {
7676
return Reg(offset + HREG_BASE, value);
7777
}
7878

79-
word Modbus::Hreg(word offset) {
79+
uint16_t Modbus::Hreg(uint16_t offset) {
8080
return Reg(offset + HREG_BASE);
8181
}
8282

8383
#ifndef USE_HOLDING_REGISTERS_ONLY
84-
void Modbus::addCoil(word offset, bool value) {
84+
void Modbus::addCoil(uint16_t offset, bool value) {
8585
this->addReg(offset + COIL_BASE, value?0xFF00:0x0000);
8686
}
8787

88-
void Modbus::addIsts(word offset, bool value) {
88+
void Modbus::addIsts(uint16_t offset, bool value) {
8989
this->addReg(offset + ISTS_BASE, value?0xFF00:0x0000);
9090
}
9191

92-
void Modbus::addIreg(word offset, word value) {
92+
void Modbus::addIreg(uint16_t offset, uint16_t value) {
9393
this->addReg(offset + IREG_BASE, value);
9494
}
9595

96-
bool Modbus::Coil(word offset, bool value) {
96+
bool Modbus::Coil(uint16_t offset, bool value) {
9797
return Reg(offset + COIL_BASE, value?0xFF00:0x0000);
9898
}
9999

100-
bool Modbus::Ists(word offset, bool value) {
100+
bool Modbus::Ists(uint16_t offset, bool value) {
101101
return Reg(offset + ISTS_BASE, value?0xFF00:0x0000);
102102
}
103103

104-
bool Modbus::Ireg(word offset, word value) {
104+
bool Modbus::Ireg(uint16_t offset, uint16_t value) {
105105
return Reg(offset + IREG_BASE, value);
106106
}
107107

108-
bool Modbus::Coil(word offset) {
108+
bool Modbus::Coil(uint16_t offset) {
109109
if (Reg(offset + COIL_BASE) == 0xFF00) {
110110
return true;
111111
} else return false;
112112
}
113113

114-
bool Modbus::Ists(word offset) {
114+
bool Modbus::Ists(uint16_t offset) {
115115
if (Reg(offset + ISTS_BASE) == 0xFF00) {
116116
return true;
117117
} else return false;
118118
}
119119

120-
word Modbus::Ireg(word offset) {
120+
uint16_t Modbus::Ireg(uint16_t offset) {
121121
return Reg(offset + IREG_BASE);
122122
}
123123
#endif
124124

125125

126126
void Modbus::receivePDU(byte* frame) {
127127
byte fcode = frame[0];
128-
word field1 = (word)frame[1] << 8 | (word)frame[2];
129-
word field2 = (word)frame[3] << 8 | (word)frame[4];
128+
uint16_t field1 = (word)frame[1] << 8 | (word)frame[2];
129+
uint16_t field2 = (word)frame[3] << 8 | (word)frame[4];
130130

131131
switch (fcode) {
132132

@@ -188,7 +188,7 @@ void Modbus::exceptionResponse(byte fcode, byte excode) {
188188
_reply = MB_REPLY_NORMAL;
189189
}
190190

191-
void Modbus::readRegisters(word startreg, word numregs) {
191+
void Modbus::readRegisters(uint16_t startreg, uint16_t numregs) {
192192
//Check value (numregs)
193193
if (numregs < 0x0001 || numregs > 0x007D) {
194194
this->exceptionResponse(MB_FC_READ_REGS, MB_EX_ILLEGAL_VALUE);
@@ -220,8 +220,8 @@ void Modbus::readRegisters(word startreg, word numregs) {
220220
_frame[0] = MB_FC_READ_REGS;
221221
_frame[1] = _len - 2; //byte count
222222

223-
word val;
224-
word i = 0;
223+
uint16_t val;
224+
uint16_t i = 0;
225225
while(numregs--) {
226226
//retrieve the value from the register bank for the current register
227227
val = this->Hreg(startreg + i);
@@ -235,8 +235,8 @@ void Modbus::readRegisters(word startreg, word numregs) {
235235
_reply = MB_REPLY_NORMAL;
236236
}
237237

238-
void Modbus::writeSingleRegister(word reg, word value) {
239-
//No necessary verify illegal value (EX_ILLEGAL_VALUE) - because using word (0x0000 - 0x0FFFF)
238+
void Modbus::writeSingleRegister(uint16_t reg, uint16_t value) {
239+
//No necessary verify illegal value (EX_ILLEGAL_VALUE) - because using uint16_t (0x0000 - 0x0FFFF)
240240
//Check Address and execute (reg exists?)
241241
if (!this->Hreg(reg, value)) {
242242
this->exceptionResponse(MB_FC_WRITE_REG, MB_EX_ILLEGAL_ADDRESS);
@@ -252,7 +252,7 @@ void Modbus::writeSingleRegister(word reg, word value) {
252252
_reply = MB_REPLY_ECHO;
253253
}
254254

255-
void Modbus::writeMultipleRegisters(byte* frame,word startreg, word numoutputs, byte bytecount) {
255+
void Modbus::writeMultipleRegisters(byte* frame,uint16_t startreg, uint16_t numoutputs, byte bytecount) {
256256
//Check value
257257
if (numoutputs < 0x0001 || numoutputs > 0x007B || bytecount != 2 * numoutputs) {
258258
this->exceptionResponse(MB_FC_WRITE_REGS, MB_EX_ILLEGAL_VALUE);
@@ -282,8 +282,8 @@ void Modbus::writeMultipleRegisters(byte* frame,word startreg, word numoutputs,
282282
_frame[3] = numoutputs >> 8;
283283
_frame[4] = numoutputs & 0x00FF;
284284

285-
word val;
286-
word i = 0;
285+
uint16_t val;
286+
uint16_t i = 0;
287287
while(numoutputs--) {
288288
val = (word)frame[6+i*2] << 8 | (word)frame[7+i*2];
289289
this->Hreg(startreg + i, val);
@@ -294,7 +294,7 @@ void Modbus::writeMultipleRegisters(byte* frame,word startreg, word numoutputs,
294294
}
295295

296296
#ifndef USE_HOLDING_REGISTERS_ONLY
297-
void Modbus::readCoils(word startreg, word numregs) {
297+
void Modbus::readCoils(uint16_t startreg, uint16_t numregs) {
298298
//Check value (numregs)
299299
if (numregs < 0x0001 || numregs > 0x07D0) {
300300
this->exceptionResponse(MB_FC_READ_COILS, MB_EX_ILLEGAL_VALUE);
@@ -330,8 +330,8 @@ void Modbus::readCoils(word startreg, word numregs) {
330330
_frame[1] = _len - 2; //byte count (_len - function code and byte count)
331331

332332
byte bitn = 0;
333-
word totregs = numregs;
334-
word i;
333+
uint16_t totregs = numregs;
334+
uint16_t i;
335335
while (numregs--) {
336336
i = (totregs - numregs) / 8;
337337
if (this->Coil(startreg))
@@ -348,7 +348,7 @@ void Modbus::readCoils(word startreg, word numregs) {
348348
_reply = MB_REPLY_NORMAL;
349349
}
350350

351-
void Modbus::readInputStatus(word startreg, word numregs) {
351+
void Modbus::readInputStatus(uint16_t startreg, uint16_t numregs) {
352352
//Check value (numregs)
353353
if (numregs < 0x0001 || numregs > 0x07D0) {
354354
this->exceptionResponse(MB_FC_READ_INPUT_STAT, MB_EX_ILLEGAL_VALUE);
@@ -381,8 +381,8 @@ void Modbus::readInputStatus(word startreg, word numregs) {
381381
_frame[1] = _len - 2;
382382

383383
byte bitn = 0;
384-
word totregs = numregs;
385-
word i;
384+
uint16_t totregs = numregs;
385+
uint16_t i;
386386
while (numregs--) {
387387
i = (totregs - numregs) / 8;
388388
if (this->Ists(startreg))
@@ -399,7 +399,7 @@ void Modbus::readInputStatus(word startreg, word numregs) {
399399
_reply = MB_REPLY_NORMAL;
400400
}
401401

402-
void Modbus::readInputRegisters(word startreg, word numregs) {
402+
void Modbus::readInputRegisters(uint16_t startreg, uint16_t numregs) {
403403
//Check value (numregs)
404404
if (numregs < 0x0001 || numregs > 0x007D) {
405405
this->exceptionResponse(MB_FC_READ_INPUT_REGS, MB_EX_ILLEGAL_VALUE);
@@ -430,8 +430,8 @@ void Modbus::readInputRegisters(word startreg, word numregs) {
430430
_frame[0] = MB_FC_READ_INPUT_REGS;
431431
_frame[1] = _len - 2;
432432

433-
word val;
434-
word i = 0;
433+
uint16_t val;
434+
uint16_t i = 0;
435435
while(numregs--) {
436436
//retrieve the value from the register bank for the current register
437437
val = this->Ireg(startreg + i);
@@ -445,7 +445,7 @@ void Modbus::readInputRegisters(word startreg, word numregs) {
445445
_reply = MB_REPLY_NORMAL;
446446
}
447447

448-
void Modbus::writeSingleCoil(word reg, word status) {
448+
void Modbus::writeSingleCoil(uint16_t reg, uint16_t status) {
449449
//Check value (status)
450450
if (status != 0xFF00 && status != 0x0000) {
451451
this->exceptionResponse(MB_FC_WRITE_COIL, MB_EX_ILLEGAL_VALUE);
@@ -467,9 +467,9 @@ void Modbus::writeSingleCoil(word reg, word status) {
467467
_reply = MB_REPLY_ECHO;
468468
}
469469

470-
void Modbus::writeMultipleCoils(byte* frame,word startreg, word numoutputs, byte bytecount) {
470+
void Modbus::writeMultipleCoils(byte* frame,uint16_t startreg, uint16_t numoutputs, byte bytecount) {
471471
//Check value
472-
word bytecount_calc = numoutputs / 8;
472+
uint16_t bytecount_calc = numoutputs / 8;
473473
if (numoutputs%8) bytecount_calc++;
474474
if (numoutputs < 0x0001 || numoutputs > 0x07B0 || bytecount != bytecount_calc) {
475475
this->exceptionResponse(MB_FC_WRITE_COILS, MB_EX_ILLEGAL_VALUE);
@@ -500,8 +500,8 @@ void Modbus::writeMultipleCoils(byte* frame,word startreg, word numoutputs, byte
500500
_frame[4] = numoutputs & 0x00FF;
501501

502502
byte bitn = 0;
503-
word totoutputs = numoutputs;
504-
word i;
503+
uint16_t totoutputs = numoutputs;
504+
uint16_t i;
505505
while (numoutputs--) {
506506
i = (totoutputs - numoutputs) / 8;
507507
this->Coil(startreg, bitRead(frame[6+i], bitn));

src/Modbus.h

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
//#define USE_HOLDING_REGISTERS_ONLY
1818

19-
typedef unsigned int u_int;
20-
2119
//Function Codes
2220
enum {
2321
MB_FC_READ_COILS = 0x01, // Read Coils (Output) Status 0xxxx
@@ -47,12 +45,13 @@ enum {
4745

4846
typedef struct TRegister;
4947

50-
typedef uint32_t (*cbModbus)(TRegister* reg, word val);
48+
// Callback function Type
49+
typedef uint16_t (*cbModbus)(TRegister* reg, uint16_t val);
5150

5251
typedef struct TRegister {
53-
word address;
54-
word value;
55-
word index;
52+
uint16_t address;
53+
uint16_t value;
54+
uint16_t index;
5655
struct TRegister* next;
5756
cbModbus get;
5857
cbModbus set;
@@ -63,23 +62,23 @@ class Modbus {
6362
TRegister *_regs_head;
6463
TRegister *_regs_last;
6564

66-
void readRegisters(word startreg, word numregs);
67-
void writeSingleRegister(word reg, word value);
68-
void writeMultipleRegisters(byte* frame,word startreg, word numoutputs, byte bytecount);
65+
void readRegisters(uint16_t startreg, uint16_t numregs);
66+
void writeSingleRegister(uint16_t reg, uint16_t value);
67+
void writeMultipleRegisters(byte* frame,uint16_t startreg, uint16_t numoutputs, byte bytecount);
6968
void exceptionResponse(byte fcode, byte excode);
7069
#ifndef USE_HOLDING_REGISTERS_ONLY
71-
void readCoils(word startreg, word numregs);
72-
void readInputStatus(word startreg, word numregs);
73-
void readInputRegisters(word startreg, word numregs);
74-
void writeSingleCoil(word reg, word status);
75-
void writeMultipleCoils(byte* frame,word startreg, word numoutputs, byte bytecount);
70+
void readCoils(uint16_t startreg, uint16_t numregs);
71+
void readInputStatus(uint16_t startreg, uint16_t numregs);
72+
void readInputRegisters(uint16_t startreg, uint16_t numregs);
73+
void writeSingleCoil(uint16_t reg, uint16_t status);
74+
void writeMultipleCoils(byte* frame,uint16_t startreg, uint16_t numoutputs, byte bytecount);
7675
#endif
7776

78-
TRegister* searchRegister(word addr);
77+
TRegister* searchRegister(uint16_t addr);
7978

80-
void addReg(word address, word value = 0);
81-
bool Reg(word address, word value);
82-
word Reg(word address);
79+
void addReg(uint16_t address, uint16_t value = 0);
80+
bool Reg(uint16_t address, uint16_t value);
81+
uint16_t Reg(uint16_t address);
8382

8483
protected:
8584
byte *_frame;
@@ -90,22 +89,22 @@ class Modbus {
9089
public:
9190
Modbus();
9291

93-
void addHreg(word offset, word value = 0);
94-
bool Hreg(word offset, word value);
95-
word Hreg(word offset);
92+
void addHreg(uint16_t offset, uint16_t value = 0);
93+
bool Hreg(uint16_t offset, uint16_t value);
94+
uint16_t Hreg(uint16_t offset);
9695

9796
#ifndef USE_HOLDING_REGISTERS_ONLY
98-
void addCoil(word offset, bool value = false);
99-
void addIsts(word offset, bool value = false);
100-
void addIreg(word offset, word value = 0);
97+
void addCoil(uint16_t offset, bool value = false);
98+
void addIsts(uint16_t offset, bool value = false);
99+
void addIreg(uint16_t offset, uint16_t value = 0);
101100

102-
bool Coil(word offset, bool value);
103-
bool Ists(word offset, bool value);
104-
bool Ireg(word offset, word value);
101+
bool Coil(uint16_t offset, bool value);
102+
bool Ists(uint16_t offset, bool value);
103+
bool Ireg(uint16_t offset, uint16_t value);
105104

106-
bool Coil(word offset);
107-
bool Ists(word offset);
108-
word Ireg(word offset);
105+
bool Coil(uint16_t offset);
106+
bool Ists(uint16_t offset);
107+
uint16_t Ireg(uint16_t offset);
109108
#endif
110109
};
111110

0 commit comments

Comments
 (0)