From 98aed80878d0ed3996702fe7f032ac1851703956 Mon Sep 17 00:00:00 2001 From: Paul Miller Date: Tue, 23 Feb 2016 19:41:45 +0100 Subject: [PATCH] Fixed Sub --- mqtt.SDB | Bin 0 -> 72 bytes mqtt.SYM | 8 +-- mqtt.c | 216 ++++++++++++++++++++++++------------------------------- mqtt.h | 201 ++++++++++++++++++++++++++------------------------- mqtt.lib | Bin 24848 -> 24700 bytes mqtt.pro | Bin 242592 -> 281408 bytes 6 files changed, 201 insertions(+), 224 deletions(-) create mode 100644 mqtt.SDB diff --git a/mqtt.SDB b/mqtt.SDB new file mode 100644 index 0000000000000000000000000000000000000000..94b691e575fe74155ffe4b340f1ecd970213ff03 GIT binary patch literal 72 pcmZQ%U|^5{Vn!hT6CuV>x4FX11IT6qVgVqA0cIcrna_sC2LRUx1Lpt$ literal 0 HcmV?d00001 diff --git a/mqtt.SYM b/mqtt.SYM index e3d1486..549bc5c 100644 --- a/mqtt.SYM +++ b/mqtt.SYM @@ -1,4 +1,4 @@ -;Version=2 -;ProjectId=154213 -;Checksum=0 -;Filesize=0 +;Version=2 +;ProjectId=1464572 +;Checksum=0 +;Filesize=0 diff --git a/mqtt.c b/mqtt.c index 0964be4..86e06cb 100644 --- a/mqtt.c +++ b/mqtt.c @@ -1,121 +1,95 @@ -#include "C:\Users\wim\Source\spikes\mqtt\mqtt.h" - - -/* The implemenation templates */ -BOOL BUFFERinit(BUFFERtyp* inst, BOOL bRetain) -{ - int j, k, l; /* Loop counters */ - for (j = 0; j < 1501; j++) - { - (*((inst->DATA) + j)) = 0; - } - inst->IPOS = 0UL; - return bRetain; -} - -BOOL _BUFFER_CONCAT(BUFFERtyp *PTparam, BUFFERtyp *PTCONTACTparam) -{ -} - -BOOL _BUFFER_PUSH(BUFFERtyp *PTparam, BYTE INparam) -{ -} - -BOOL _BUFFER_PUSH_STRING(BUFFERtyp *PTparam, char* INparam, BOOL INCLUDE_LENGTHparam) -{ -} - -BOOL _BUFFER_SET(BUFFERtyp *PTparam, BYTE INparam, WORD POSparam) -{ -} - -BOOL FIXEDHEADERinit(FIXEDHEADERtyp* inst, BOOL bRetain) -{ - int j, k, l; /* Loop counters */ - inst->BMESSAGETYPE = 0; - inst->XDUP_FLAG = FALSE; - inst->XQOS = 0; - inst->XRETAIN = FALSE; - return bRetain; -} - -BOOL CREATE_MESSAGE(BUFFERtyp *PTparam, FIXEDHEADERtyp FIXEDHEADERparam, BUFFERtyp VARIABLEHEADERparam, BUFFERtyp PAYLOADparam) -{ -} - -BOOL ENCODE_REMAINING_LENGTH(BUFFERtyp *PTparam, DWORD LENGTHparam) -{ -} - -BOOL CONNECTFLAGSinit(CONNECTFLAGStyp* inst, BOOL bRetain) -{ - int j, k, l; /* Loop counters */ - inst->XUSERNAME = FALSE; - inst->XPASSWORD = FALSE; - inst->XWILLRETAIN = FALSE; - inst->XWILLQOS1 = FALSE; - inst->XWILLQOS2 = FALSE; - inst->XWILLFLAG = FALSE; - inst->XCLEANSESSION = FALSE; - return bRetain; -} - -void MQTT_CLIENT(MQTT_CLIENTtyp* inst) -{ -} - -BOOL MQTT_CLIENTinit(MQTT_CLIENTtyp* inst, BOOL bRetain) -{ - int j, k, l; /* Loop counters */ - /* Initializing Function Block components */ - inst->VERSION = 3; - inst->RESERVED = 0; - inst->CONNECT = 1; - inst->CONNACK = 2; - inst->PUBLISH = 3; - inst->PUBACK = 4; - inst->PUBREC = 5; - inst->PUBREL = 6; - inst->PUBCOMP = 7; - inst->SUBSCRIBE = 8; - inst->SUBACK = 9; - inst->UNSUBSCRIBE = 10; - inst->UNSUBACK = 11; - inst->PINGREQ = 12; - inst->PINGRESP = 13; - inst->DISCONNECT = 14; - inst->RESERVED2 = 15; - inst->CONNECTED = 30; - inst->NOT_CONNECTED = 40; - inst->TIMEOUT = 50; - inst->WAIT_RESPONSE = 60; - inst->CONNECTION_TIMEOUT = 10000UL; - BUFFERinitmac(&inst->SENDBUFFER, bRetain); - BUFFERinitmac(&inst->RECEIVEBUFFER, bRetain); - FIXEDHEADERinitmac(&inst->FIXEDHEADER, bRetain); - BUFFERinitmac(&inst->VARIABLEHEADER, bRetain); - BUFFERinitmac(&inst->PAYLOAD, bRetain); - CONNECTFLAGSinitmac(&inst->CONNECTFLAGS, bRetain); - TCP_CLIENTinitmac(&inst->TCPCLIENT, bRetain); - inst->XTCPCONNECTED = FALSE; - inst->XSTARTSEND = FALSE; - inst->DIRECEIVECOUNT = 0L; - TONinitmac(&inst->CONNECTIONTIMER, bRetain); - inst->XTIMEOUT = FALSE; - inst->INCOMINGMESSAGETYPE = 0; - inst->ESTATE = 0; - inst->XSTARTTIMER = FALSE; - (*pstrcpy)(inst->STOPIC, ""); - (*pstrcpy)(inst->SPAYLOAD, ""); - inst->XCONNECTED = FALSE; - if (bRetain) - return bRetain; - - /* Initalize the retain variables only if bRetain is FALSE */ - return bRetain; -} - -void PLC_PRG(void) -{ -} - +#include "C:\users\oedemis\Desktop\Master\implementations\Clients\ownimplementation\own\mqtt.h" + + +/* The implemenation templates */ +BOOL BUFFERinit(BUFFERtyp* inst, BOOL bRetain) +{ + int j; /* Loop counter */ + for (j = 0; j < 1501; j++) + { + (*((inst->DATA) + j)) = 0; + } + inst->IPOS = 0UL; + return bRetain; +} + +BOOL FIXEDHEADERinit(FIXEDHEADERtyp* inst, BOOL bRetain) +{ + inst->BMESSAGETYPE = 0; + inst->XDUP_FLAG = FALSE; + inst->XQOS = 0; + inst->XRETAIN = FALSE; + return bRetain; +} + +BOOL CONNECTFLAGSinit(CONNECTFLAGStyp* inst, BOOL bRetain) +{ + inst->XUSERNAME = FALSE; + inst->XPASSWORD = FALSE; + inst->XWILLRETAIN = FALSE; + inst->XWILLQOS1 = FALSE; + inst->XWILLQOS2 = FALSE; + inst->XWILLFLAG = FALSE; + inst->XCLEANSESSION = FALSE; + return bRetain; +} + +void MQTT_CLIENT(MQTT_CLIENTtyp* inst) +{ +} + +BOOL MQTT_CLIENTinit(MQTT_CLIENTtyp* inst, BOOL bRetain) +{ + /* Initializing Function Block components */ + inst->VERSION = 3; + inst->RESERVED = 0; + inst->CONNECT = 1; + inst->CONNACK = 2; + inst->PUBLISH = 3; + inst->PUBACK = 4; + inst->PUBREC = 5; + inst->PUBREL = 6; + inst->PUBCOMP = 7; + inst->SUBSCRIBE = 8; + inst->SUBACK = 9; + inst->UNSUBSCRIBE = 10; + inst->UNSUBACK = 11; + inst->PINGREQ = 12; + inst->PINGRESP = 13; + inst->DISCONNECT = 14; + inst->RESERVED2 = 15; + inst->CONNECTED = 30; + inst->NOT_CONNECTED = 40; + inst->TIMEOUT = 50; + inst->WAIT_RESPONSE = 60; + inst->CONNECTION_TIMEOUT = 10000UL; + BUFFERinitmac(&inst->SENDBUFFER, bRetain); + BUFFERinitmac(&inst->RECEIVEBUFFER, bRetain); + FIXEDHEADERinitmac(&inst->FIXEDHEADER, bRetain); + BUFFERinitmac(&inst->VARIABLEHEADER, bRetain); + BUFFERinitmac(&inst->PAYLOAD, bRetain); + CONNECTFLAGSinitmac(&inst->CONNECTFLAGS, bRetain); + TCP_CLIENTinitmac(&inst->TCPCLIENT, bRetain); + inst->XTCPCONNECTED = FALSE; + inst->XSTARTSEND = FALSE; + inst->DIRECEIVECOUNT = 0L; + TONinitmac(&inst->CONNECTIONTIMER, bRetain); + inst->XTIMEOUT = FALSE; + inst->INCOMINGMESSAGETYPE = 0; + inst->ESTATE = 0; + inst->XSTARTTIMER = FALSE; + (*pstrcpy)(inst->STOPIC, ""); + (*pstrcpy)(inst->SPAYLOAD, ""); + (*pstrcpy)(inst->SIP, ""); + inst->WPORTNUMBER = 0; + (*pstrcpy)(inst->SUSERNAME, ""); + (*pstrcpy)(inst->SPASSWORD, ""); + inst->XCONNECTED = FALSE; + inst->XBUSY = FALSE; + if (bRetain) + return bRetain; + + /* Initalize the retain variables only if bRetain is FALSE */ + return bRetain; +} + diff --git a/mqtt.h b/mqtt.h index 9523ac0..414ad8e 100644 --- a/mqtt.h +++ b/mqtt.h @@ -1,99 +1,102 @@ -typedef struct -{ - BYTE DATA[1501]; - DWORD IPOS; -} -BUFFERtyp; - -typedef struct -{ - BYTE BMESSAGETYPE; - BOOL XDUP_FLAG; - BYTE XQOS; - BOOL XRETAIN; -} -FIXEDHEADERtyp; - -typedef struct -{ - BOOL XUSERNAME; - BOOL XPASSWORD; - BOOL XWILLRETAIN; - BOOL XWILLQOS1; - BOOL XWILLQOS2; - BOOL XWILLFLAG; - BOOL XCLEANSESSION; -} -CONNECTFLAGStyp; - -typedef struct -{ - BYTE VERSION; - BYTE RESERVED; - BYTE CONNECT; - BYTE CONNACK; - BYTE PUBLISH; - BYTE PUBACK; - BYTE PUBREC; - BYTE PUBREL; - BYTE PUBCOMP; - BYTE SUBSCRIBE; - BYTE SUBACK; - BYTE UNSUBSCRIBE; - BYTE UNSUBACK; - BYTE PINGREQ; - BYTE PINGRESP; - BYTE DISCONNECT; - BYTE RESERVED2; - INT CONNECTED; - INT NOT_CONNECTED; - INT TIMEOUT; - INT WAIT_RESPONSE; - DWORD CONNECTION_TIMEOUT; - BUFFERtyp SENDBUFFER; - BUFFERtyp RECEIVEBUFFER; - FIXEDHEADERtyp FIXEDHEADER; - BUFFERtyp VARIABLEHEADER; - BUFFERtyp PAYLOAD; - CONNECTFLAGStyp CONNECTFLAGS; - TCP_CLIENTtyp TCPCLIENT; - BOOL XTCPCONNECTED; - BOOL XSTARTSEND; - DINT DIRECEIVECOUNT; - TONtyp CONNECTIONTIMER; - BOOL XTIMEOUT; - BYTE INCOMINGMESSAGETYPE; - INT ESTATE; - BOOL XSTARTTIMER; - char STOPIC[81]; - char SPAYLOAD[81]; - BOOL XCONNECTED; - BOOL *XPUBLISH; - BOOL *XSUBSCRIBE; -} -MQTT_CLIENTtyp; - - -/* Enum definitions */ - - -/* The Prototypes */ -BOOL BUFFERinit(BUFFERtyp* inst, BOOL bRetain); -BOOL _BUFFER_CONCAT(BUFFERtyp *PTparam, BUFFERtyp *PTCONTACTparam); -; -BOOL _BUFFER_PUSH(BUFFERtyp *PTparam, BYTE INparam); -; -BOOL _BUFFER_PUSH_STRING(BUFFERtyp *PTparam, char* INparam, BOOL INCLUDE_LENGTHparam); -; -BOOL _BUFFER_SET(BUFFERtyp *PTparam, BYTE INparam, WORD POSparam); -; -BOOL FIXEDHEADERinit(FIXEDHEADERtyp* inst, BOOL bRetain); -BOOL CREATE_MESSAGE(BUFFERtyp *PTparam, FIXEDHEADERtyp FIXEDHEADERparam, BUFFERtyp VARIABLEHEADERparam, BUFFERtyp PAYLOADparam); -; -BOOL ENCODE_REMAINING_LENGTH(BUFFERtyp *PTparam, DWORD LENGTHparam); -; -BOOL CONNECTFLAGSinit(CONNECTFLAGStyp* inst, BOOL bRetain); -void MQTT_CLIENT(MQTT_CLIENTtyp* inst); -BOOL MQTT_CLIENTinit(MQTT_CLIENTtyp* inst, BOOL bRetain); -void PLC_PRG(void); -; +typedef struct +{ + BYTE DATA[1501]; + DWORD IPOS; +} +BUFFERtyp; + +typedef struct +{ + BYTE BMESSAGETYPE; + BOOL XDUP_FLAG; + BYTE XQOS; + BOOL XRETAIN; +} +FIXEDHEADERtyp; + +typedef struct +{ + BOOL XUSERNAME; + BOOL XPASSWORD; + BOOL XWILLRETAIN; + BOOL XWILLQOS1; + BOOL XWILLQOS2; + BOOL XWILLFLAG; + BOOL XCLEANSESSION; +} +CONNECTFLAGStyp; + +typedef struct +{ + BYTE VERSION; + BYTE RESERVED; + BYTE CONNECT; + BYTE CONNACK; + BYTE PUBLISH; + BYTE PUBACK; + BYTE PUBREC; + BYTE PUBREL; + BYTE PUBCOMP; + BYTE SUBSCRIBE; + BYTE SUBACK; + BYTE UNSUBSCRIBE; + BYTE UNSUBACK; + BYTE PINGREQ; + BYTE PINGRESP; + BYTE DISCONNECT; + BYTE RESERVED2; + INT CONNECTED; + INT NOT_CONNECTED; + INT TIMEOUT; + INT WAIT_RESPONSE; + DWORD CONNECTION_TIMEOUT; + BUFFERtyp SENDBUFFER; + BUFFERtyp RECEIVEBUFFER; + FIXEDHEADERtyp FIXEDHEADER; + BUFFERtyp VARIABLEHEADER; + BUFFERtyp PAYLOAD; + CONNECTFLAGStyp CONNECTFLAGS; + TCP_CLIENTtyp TCPCLIENT; + BOOL XTCPCONNECTED; + BOOL XSTARTSEND; + DINT DIRECEIVECOUNT; + TONtyp CONNECTIONTIMER; + BOOL XTIMEOUT; + BYTE INCOMINGMESSAGETYPE; + INT ESTATE; + BOOL XSTARTTIMER; + char STOPIC[81]; + char SPAYLOAD[81]; + char SIP[81]; + WORD WPORTNUMBER; + char SUSERNAME[81]; + char SPASSWORD[81]; + BOOL XCONNECTED; + BOOL XBUSY; + BOOL *XPUBLISH; + BOOL *XSUBSCRIBE; +} +MQTT_CLIENTtyp; + + +/* Enum definitions */ + + +/* The Prototypes */ +BOOL BUFFERinit(BUFFERtyp* inst, BOOL bRetain); +BOOL FIXEDHEADERinit(FIXEDHEADERtyp* inst, BOOL bRetain); +BOOL CONNECTFLAGSinit(CONNECTFLAGStyp* inst, BOOL bRetain); +void MQTT_CLIENT(MQTT_CLIENTtyp* inst); +BOOL MQTT_CLIENTinit(MQTT_CLIENTtyp* inst, BOOL bRetain); +BOOL ENCODE_REMAINING_LENGTH(BUFFERtyp *PTparam, DWORD LENGTHparam); +; +BOOL _BUFFER_CONCAT(BUFFERtyp *PTparam, BUFFERtyp *PTCONTACTparam); +; +BOOL _BUFFER_PUSH(BUFFERtyp *PTparam, BYTE INparam); +; +BOOL _BUFFER_PUSH_STRING(BUFFERtyp *PTparam, char* INparam, BOOL INCLUDE_LENGTHparam); +; +BOOL _BUFFER_SET(BUFFERtyp *PTparam, BYTE INparam, WORD POSparam); +; +BOOL CREATE_MESSAGE(BUFFERtyp *PTparam, FIXEDHEADERtyp FIXEDHEADERparam, BUFFERtyp VARIABLEHEADERparam, BUFFERtyp PAYLOADparam); +; diff --git a/mqtt.lib b/mqtt.lib index f41112933b2425ee9cc994eb9b4f6bde863bc593..21e363443a4fa476887b3d4622575ef792979a4d 100644 GIT binary patch literal 24700 zcmcg!U2G)TRc>!K?0CXJ*uaK=733i^8)ssBW`E)^!QIu>c4fM|YO1O|p3Q7ZJ$CPG zD<0c&w|8d{???y)JOB~Dk&t*tNQgvv;73A4f>$IYUh)D0iDx7vw0z&Wx9Xl--5zhG zgG;vn zb z?fo)~!YJO0$|6k5updXm;_V>m1)T>)^d+>JrYAGB>E2JWZm@MHSO<_3Uoqu(_U8@l z6IXs$#zo+-w*GUaIj$cBJUlr*o*c}3N8`t{)|G$fT=9?LbJ6Jj1!x(aZtacn>1Z}N zJ03ro1pI6Toh0dV98c5nZ1(=i*UC*wn!$bVCb{PTPz ze!EhlYV7Io(EzfJA5V&BrxVHxQ{dEZy#ASWPXFrD?kFvL{q_zAYE(>ouiekZW}e=I z%~YRe`{4Sk>uVcpo3Gv=r&{w%IbEuv7hh_pLsoTF}xDVYFpu)aylA z879N9U9_(J%n!hqehPn{uc%)Ex;GkzMVt%+pNAdxwW|z>@h~0HztV#0NRxP2L|ITI z)(5Gww1CCV#|QI^C^%FJrt)WXx)p$n^)-NAo=}z~3#MCl*2!8NvMdsGURa@nVLFDz0A0H{ng;~eD?0-Fpx+% zKMBUcBMGm;`0Q-_ETB!M#n*0%R``Y5e4Dl%51}E0G!gL*v}o|b=YkDEYAvu0!fy1X zMRop>sI$}Rw0?8t*B8|JsfIckXyf5d>&m}=99sPz{(u0Viz4LrfLp3n%jhEIUSPM- z?N(q!z!+EKVb~vaqp}|jcZzDFwC~sIH)cG8OZc3tw9=n26p9s-@l^jfemYO*XUp1I z_AjrXQke>iI{{?59uH~3(%YS&-OViE+SRy+sqxOsbDs|eF9t^G;*rp7up�_KNFHi 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 I!O>s-FH9Mn=>Px# literal 24848 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 AKmY&$ diff --git a/mqtt.pro b/mqtt.pro index df8ea0b2194b714ac1f475f9e41729e7c88af8c4..3c2c060024797b6a7bd3d973bb218eef22aed694 100644 GIT binary patch delta 36436 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