Handle bigger modbus messages

This commit is contained in:
Douglas Clowes
2014-12-12 14:25:24 +11:00
parent ff03b1108b
commit c61cb22270

View File

@ -20,7 +20,7 @@
*/ */
#define PROTOCOL_NAME "MODBUS_AP" #define PROTOCOL_NAME "MODBUS_AP"
#define PROTOCOL_INIT MODBUSInitProtocol #define PROTOCOL_INIT MODBUSInitProtocol
#define ADUSIZE 17 #define ADUSIZE 300
/* /*
* MODBUS DataTypes * MODBUS DataTypes
@ -63,7 +63,7 @@ struct modbus_private_t {
int aduLen; int aduLen;
int RespLen; int RespLen;
int DatLen; int DatLen;
unsigned char ADU[ADUSIZE]; /* Allows upto 8 bytes if data */ unsigned char ADU[ADUSIZE]; /* Allows up to 255 bytes of data */
pDynString rdBuffer; pDynString rdBuffer;
}; };
@ -89,6 +89,10 @@ static ProtoPrivate *makeProtoPrivate()
static ProtoPrivate *Proto_KillPrivate(ProtoPrivate *priv) static ProtoPrivate *Proto_KillPrivate(ProtoPrivate *priv)
{ {
if (priv) { if (priv) {
if (priv->wrBuffer) {
DeleteDynString(priv->wrBuffer);
priv->wrBuffer = NULL;
}
if (priv->rxBuffer) { if (priv->rxBuffer) {
DeleteDynString(priv->rxBuffer); DeleteDynString(priv->rxBuffer);
priv->rxBuffer = NULL; priv->rxBuffer = NULL;
@ -268,7 +272,7 @@ static int ModbusOutput(pPrivate myPriv, pDynString wrBuffer, pDynString send_bu
int ADUlen, PDUlenPlusUID; int ADUlen, PDUlenPlusUID;
unsigned int i, j; unsigned int i, j;
char *cmdLine; char *cmdLine;
unsigned char ADU[32], ieee[4]; unsigned char ADU[ADUSIZE], ieee[4];
cmdLine = GetCharArray(wrBuffer); cmdLine = GetCharArray(wrBuffer);
for (i=0; i < 4; i++) for (i=0; i < 4; i++)