11 #ifndef _TCMENU_REMOTECONNECTOR_H_
12 #define _TCMENU_REMOTECONNECTOR_H_
14 #include <PlatformDetermination.h>
23 #define TAG_VAL_PROTOCOL 0x01
24 #define BINARY_GZ_PROTOCOL 0x02
25 #define START_OF_MESSAGE 0x01
26 #define TICK_INTERVAL 1
29 #ifndef HEARTBEAT_INTERVAL
30 # define HEARTBEAT_INTERVAL 1500
33 #define HEARTBEAT_INTERVAL_TICKS (HEARTBEAT_INTERVAL / TICK_INTERVAL)
34 #define PAIRING_TIMEOUT_TICKS (15000 / TICK_INTERVAL)
90 char value[MAX_VALUE_LEN];
99 #define COMMSERR_WRITE_NOT_CONNECTED 1
100 #define COMMSERR_PROTOCOL_ERROR 2
101 #define COMMSERR_CONNECTED 3
102 #define COMMSERR_DISCONNECTED 4
105 uint16_t remoteNo: 4;
106 uint16_t connected: 1;
107 uint16_t errorMode: 8;
141 uint8_t protocolUsed;
146 virtual void startMsg(uint16_t msgType);
147 void startBinMsg(uint16_t msgType, uint16_t byteLen);
148 void writeField(uint16_t field,
const char* value);
149 void writeFieldInt(uint16_t field,
int value);
150 void writeFieldLong(uint16_t field,
long value);
155 virtual void flush() = 0;
156 virtual int writeChar(
char data) = 0;
157 virtual int writeStr(
const char* data) = 0;
158 virtual uint8_t readByte()=0;
159 virtual bool readAvailable()=0;
161 virtual bool available() = 0;
162 virtual bool connected() = 0;
163 virtual void close() = 0;
164 virtual void endMsg();
166 bool findNextMessageStart();
167 bool processMsgKey();
168 bool processValuePart();
171 #define FLAG_CURRENTLY_CONNECTED 0
172 #define FLAG_BOOTSTRAP_MODE 1
173 #define FLAG_BOOTSTRAP_COMPLETE 2
174 #define FLAG_AUTHENTICATED 3
175 #define FLAG_PAIRING_MODE 4
176 #define FLAG_FULLY_JOINED_RX 5
177 #define FLAG_FULLY_JOINED_TX 6
186 uint16_t ticksLastSend;
187 uint16_t ticksLastRead;
200 uint8_t remoteMajorVer, remoteMinorVer;
234 void provideAuthentication(
const char* auth);
292 void encodeDialogMsg(uint8_t mode, uint8_t btn1, uint8_t btn2,
const char* hdrPgm,
const char* buffer);
458 bool isConnected() {
return bitRead(flags, FLAG_CURRENTLY_CONNECTED); }
484 void encodeBaseMenuFields(
int parentId,
MenuItem* item);
485 bool prepareWriteMsg(uint16_t msgType);
486 void nextBootstrap();
487 void performAnyWrites();
488 void dealWithHeartbeating();
495 void setConnected(
bool conn);
497 bool isBootstrapMode() {
return bitRead(flags, FLAG_BOOTSTRAP_MODE); }
498 void setBootstrapMode(
bool mode) { bitWrite(flags, FLAG_BOOTSTRAP_MODE, mode); }
500 bool isBootstrapComplete() {
return bitRead(flags, FLAG_BOOTSTRAP_COMPLETE); }
501 void setBootstrapComplete(
bool mode) { bitWrite(flags, FLAG_BOOTSTRAP_COMPLETE, mode); }
503 void setAuthenticated(
bool auth) { bitWrite(flags, FLAG_AUTHENTICATED, auth); }
505 bool isPairing() {
return bitRead(flags, FLAG_PAIRING_MODE); }
506 void setPairing(
bool pair) { bitWrite(flags, FLAG_PAIRING_MODE, pair); }
508 bool isConnectionFullyEstablished() {
509 return isConnected() && (bitRead(flags, FLAG_FULLY_JOINED_RX) != 0) && (bitRead(flags, FLAG_FULLY_JOINED_TX) != 0);
512 void setFullyJoinedRx(
bool joinRx) { bitWrite(flags, FLAG_FULLY_JOINED_RX, joinRx); }
514 void setFullyJoinedTx(
bool joinTx) { bitWrite(flags, FLAG_FULLY_JOINED_TX, joinTx); }
516 bool beginEncodeChange(
MenuItem *item);
This file contains the default processors that can deal with incoming messages turning them into even...
void(* CommsCallbackFn)(CommunicationInfo)
Definition: RemoteConnector.h:114
FieldValueType
Definition: RemoteConnector.h:50
@ FVAL_END_MSG
Definition: RemoteConnector.h:54
@ FVAL_PROCESSING_MSGTYPE_HI
Definition: RemoteConnector.h:70
@ FVAL_NEW_MSG
Definition: RemoteConnector.h:52
@ FVAL_PROCESSING_VALUE
Definition: RemoteConnector.h:64
@ FVAL_ERROR_PROTO
Definition: RemoteConnector.h:58
@ FVAL_PROCESSING_PROTOCOL
Definition: RemoteConnector.h:68
@ FVAL_PROCESSING_MSGTYPE_LO
Definition: RemoteConnector.h:72
@ FVAL_FIELD
Definition: RemoteConnector.h:56
@ FVAL_PROCESSING_WAITEQ
Definition: RemoteConnector.h:62
@ FVAL_PROCESSING_AWAITINGMSG
Definition: RemoteConnector.h:66
@ FVAL_PROCESSING
Definition: RemoteConnector.h:60
TagValueTransportType
Definition: RemoteConnector.h:124
@ TVAL_BUFFERED
Definition: RemoteConnector.h:128
@ TVAL_UNBUFFERED
Definition: RemoteConnector.h:126
@ TVAL_BUFFERED_DELEGATE_ENCRYPT
Definition: RemoteConnector.h:130
Definition: RemoteConnector.h:104
Definition: RemoteConnector.h:86
contains the definitions of each message and field.
HeartbeatMode
Definition: RemoteTypes.h:157
ApiPlatform
Definition: RemoteTypes.h:147
Definition: RemoteAuthentication.h:38
Definition: MessageProcessors.h:146
Definition: RemoteConnector.h:183
bool isConnected()
Definition: RemoteConnector.h:458
const char * getRemoteName()
Definition: RemoteConnector.h:437
bool isTransportAvailable()
Definition: RemoteConnector.h:232
void encodeAnalogItem(int parentId, AnalogMenuItem *item)
Definition: RemoteConnector.cpp:431
void setRemoteName(const char *name)
Definition: RemoteConnector.cpp:67
void encodeRuntimeMenuItem(int parentId, RuntimeMenuItem *item)
Definition: RemoteConnector.cpp:535
uint8_t getRemoteMajorVer() const
Definition: RemoteConnector.h:442
void encodeSubMenu(int parentId, SubMenuItem *item)
Definition: RemoteConnector.cpp:584
void encodeMultiEditMenu(int parentId, RuntimeMenuItem *item)
Definition: RemoteConnector.cpp:481
void encodeEnumMenu(int parentId, EnumMenuItem *item)
Definition: RemoteConnector.cpp:550
void encodeBootstrap(bool isComplete)
Definition: RemoteConnector.cpp:378
void tick()
Definition: RemoteConnector.cpp:172
bool isTransportConnected()
Definition: RemoteConnector.h:239
void setRemoteConnected(uint8_t major, uint8_t minor, ApiPlatform platform)
Definition: RemoteConnector.cpp:72
void pairingRequest(const char *name, const char *uuid)
Definition: RemoteConnector.cpp:126
void encodeAcknowledgement(uint32_t correlation, AckResponseStatus status)
Definition: RemoteConnector.cpp:565
void encodeLargeNumberMenuItem(int parentId, EditableLargeNumberMenuItem *item)
Definition: RemoteConnector.cpp:470
void initialise(TagValueTransport *transport, CombinedMessageProcessor *processor, const ConnectorLocalInfo *localInfoPgm, uint8_t remoteNo)
Definition: RemoteConnector.cpp:55
uint8_t getRemoteMinorVer() const
Definition: RemoteConnector.h:447
bool isAuthenticated()
Definition: RemoteConnector.h:481
TagValueRemoteConnector(uint8_t remoteNo=0)
Definition: RemoteConnector.cpp:41
void encodeColorMenuItem(int id, Rgb32MenuItem *pItem)
Definition: RemoteConnector.cpp:460
void encodeBooleanMenu(int parentId, BooleanMenuItem *item)
Definition: RemoteConnector.cpp:576
void close()
Definition: RemoteConnector.cpp:159
void encodeChangeValue(MenuItem *theItem)
Definition: RemoteConnector.cpp:602
void encodeCustomTagValMessage(uint16_t msgType, void(*msgWriter)(TagValueTransport *))
Definition: RemoteConnector.cpp:356
void encodeDialogMsg(uint8_t mode, uint8_t btn1, uint8_t btn2, const char *hdrPgm, const char *buffer)
Definition: RemoteConnector.cpp:338
void setCommsNotificationCallback(CommsCallbackFn callback)
Definition: RemoteConnector.h:227
void encodeActionMenu(int parentId, ActionMenuItem *item)
Definition: RemoteConnector.cpp:590
void initiateBootstrap()
Definition: RemoteConnector.cpp:268
void commsNotify(uint16_t commsEventType)
Definition: RemoteConnector.cpp:149
void encodeScrollMenuItem(int id, ScrollChoiceMenuItem *pItem)
Definition: RemoteConnector.cpp:445
uint8_t getRemoteNo() const
Definition: RemoteConnector.h:432
void encodeFloatMenu(int parentId, FloatMenuItem *item)
Definition: RemoteConnector.cpp:515
void encodeHeartbeat(HeartbeatMode restartConnection)
Definition: RemoteConnector.cpp:384
void encodeJoin()
Definition: RemoteConnector.cpp:363
void encodeCustomBinaryMessage(uint16_t msgType, uint16_t len, void(*msgWriter)(TagValueTransport *, void *), void *data=nullptr)
Definition: RemoteConnector.cpp:405
ApiPlatform getRemotePlatform()
Definition: RemoteConnector.h:452
Definition: RemoteConnector.h:137
A series of utilities that used throughout tcMenu.