* companion: reverted PUSH_CODE_TELEMETRY_RESPONSE, added new PUSH_CODE_BINARY_RESPONSE
This commit is contained in:
@@ -94,7 +94,8 @@
|
|||||||
#define PUSH_CODE_LOG_RX_DATA 0x88
|
#define PUSH_CODE_LOG_RX_DATA 0x88
|
||||||
#define PUSH_CODE_TRACE_DATA 0x89
|
#define PUSH_CODE_TRACE_DATA 0x89
|
||||||
#define PUSH_CODE_NEW_ADVERT 0x8A
|
#define PUSH_CODE_NEW_ADVERT 0x8A
|
||||||
#define PUSH_CODE_BINARY_RESPONSE 0x8B // was 'PUSH_CODE_TELEMETRY_RESPONSE'
|
#define PUSH_CODE_TELEMETRY_RESPONSE 0x8B
|
||||||
|
#define PUSH_CODE_BINARY_RESPONSE 0x8C
|
||||||
|
|
||||||
#define ERR_CODE_UNSUPPORTED_CMD 1
|
#define ERR_CODE_UNSUPPORTED_CMD 1
|
||||||
#define ERR_CODE_NOT_FOUND 2
|
#define ERR_CODE_NOT_FOUND 2
|
||||||
@@ -492,14 +493,25 @@ void MyMesh::onContactResponse(const ContactInfo &contact, const uint8_t *data,
|
|||||||
memcpy(&out_frame[i], &data[4], len - 4);
|
memcpy(&out_frame[i], &data[4], len - 4);
|
||||||
i += (len - 4);
|
i += (len - 4);
|
||||||
_serial->writeFrame(out_frame, i);
|
_serial->writeFrame(out_frame, i);
|
||||||
|
} else if (len > 4 && tag == pending_telemetry) { // check for matching response tag
|
||||||
|
pending_telemetry = 0;
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
out_frame[i++] = PUSH_CODE_TELEMETRY_RESPONSE;
|
||||||
|
out_frame[i++] = 0; // reserved
|
||||||
|
memcpy(&out_frame[i], contact.id.pub_key, 6);
|
||||||
|
i += 6; // pub_key_prefix
|
||||||
|
memcpy(&out_frame[i], &data[4], len - 4);
|
||||||
|
i += (len - 4);
|
||||||
|
_serial->writeFrame(out_frame, i);
|
||||||
} else if (len > 4 && tag == pending_req) { // check for matching response tag
|
} else if (len > 4 && tag == pending_req) { // check for matching response tag
|
||||||
pending_req = 0;
|
pending_req = 0;
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
out_frame[i++] = PUSH_CODE_BINARY_RESPONSE;
|
out_frame[i++] = PUSH_CODE_BINARY_RESPONSE;
|
||||||
out_frame[i++] = 0; // reserved
|
out_frame[i++] = 0; // reserved
|
||||||
memcpy(&out_frame[i], contact.id.pub_key, 6);
|
memcpy(&out_frame[i], &tag, 4); // app needs to match this to RESP_CODE_SENT.tag
|
||||||
i += 6; // pub_key_prefix
|
i += 4;
|
||||||
memcpy(&out_frame[i], &data[4], len - 4);
|
memcpy(&out_frame[i], &data[4], len - 4);
|
||||||
i += (len - 4);
|
i += (len - 4);
|
||||||
_serial->writeFrame(out_frame, i);
|
_serial->writeFrame(out_frame, i);
|
||||||
@@ -568,7 +580,7 @@ MyMesh::MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMe
|
|||||||
_cli_rescue = false;
|
_cli_rescue = false;
|
||||||
offline_queue_len = 0;
|
offline_queue_len = 0;
|
||||||
app_target_ver = 0;
|
app_target_ver = 0;
|
||||||
pending_login = pending_status = pending_req = 0;
|
pending_login = pending_status = pending_telemetry = pending_req = 0;
|
||||||
next_ack_idx = 0;
|
next_ack_idx = 0;
|
||||||
sign_data = NULL;
|
sign_data = NULL;
|
||||||
dirty_contacts_expiry = 0;
|
dirty_contacts_expiry = 0;
|
||||||
@@ -1105,7 +1117,7 @@ void MyMesh::handleCmdFrame(size_t len) {
|
|||||||
if (result == MSG_SEND_FAILED) {
|
if (result == MSG_SEND_FAILED) {
|
||||||
writeErrFrame(ERR_CODE_TABLE_FULL);
|
writeErrFrame(ERR_CODE_TABLE_FULL);
|
||||||
} else {
|
} else {
|
||||||
pending_req = pending_status = 0;
|
pending_req = pending_telemetry = pending_status = 0;
|
||||||
memcpy(&pending_login, recipient->id.pub_key, 4); // match this to onContactResponse()
|
memcpy(&pending_login, recipient->id.pub_key, 4); // match this to onContactResponse()
|
||||||
out_frame[0] = RESP_CODE_SENT;
|
out_frame[0] = RESP_CODE_SENT;
|
||||||
out_frame[1] = (result == MSG_SEND_SENT_FLOOD) ? 1 : 0;
|
out_frame[1] = (result == MSG_SEND_SENT_FLOOD) ? 1 : 0;
|
||||||
@@ -1125,7 +1137,7 @@ void MyMesh::handleCmdFrame(size_t len) {
|
|||||||
if (result == MSG_SEND_FAILED) {
|
if (result == MSG_SEND_FAILED) {
|
||||||
writeErrFrame(ERR_CODE_TABLE_FULL);
|
writeErrFrame(ERR_CODE_TABLE_FULL);
|
||||||
} else {
|
} else {
|
||||||
pending_req = pending_login = 0;
|
pending_req = pending_telemetry = pending_login = 0;
|
||||||
// FUTURE: pending_status = tag; // match this in onContactResponse()
|
// FUTURE: pending_status = tag; // match this in onContactResponse()
|
||||||
memcpy(&pending_status, recipient->id.pub_key, 4); // legacy matching scheme
|
memcpy(&pending_status, recipient->id.pub_key, 4); // legacy matching scheme
|
||||||
out_frame[0] = RESP_CODE_SENT;
|
out_frame[0] = RESP_CODE_SENT;
|
||||||
@@ -1146,8 +1158,8 @@ void MyMesh::handleCmdFrame(size_t len) {
|
|||||||
if (result == MSG_SEND_FAILED) {
|
if (result == MSG_SEND_FAILED) {
|
||||||
writeErrFrame(ERR_CODE_TABLE_FULL);
|
writeErrFrame(ERR_CODE_TABLE_FULL);
|
||||||
} else {
|
} else {
|
||||||
pending_status = pending_login = 0;
|
pending_status = pending_login = pending_req = 0;
|
||||||
pending_req = tag; // match this in onContactResponse()
|
pending_telemetry = tag; // match this in onContactResponse()
|
||||||
out_frame[0] = RESP_CODE_SENT;
|
out_frame[0] = RESP_CODE_SENT;
|
||||||
out_frame[1] = (result == MSG_SEND_SENT_FLOOD) ? 1 : 0;
|
out_frame[1] = (result == MSG_SEND_SENT_FLOOD) ? 1 : 0;
|
||||||
memcpy(&out_frame[2], &tag, 4);
|
memcpy(&out_frame[2], &tag, 4);
|
||||||
@@ -1164,7 +1176,7 @@ void MyMesh::handleCmdFrame(size_t len) {
|
|||||||
sensors.querySensors(0xFF, telemetry);
|
sensors.querySensors(0xFF, telemetry);
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
out_frame[i++] = PUSH_CODE_BINARY_RESPONSE;
|
out_frame[i++] = PUSH_CODE_TELEMETRY_RESPONSE;
|
||||||
out_frame[i++] = 0; // reserved
|
out_frame[i++] = 0; // reserved
|
||||||
memcpy(&out_frame[i], self_id.pub_key, 6);
|
memcpy(&out_frame[i], self_id.pub_key, 6);
|
||||||
i += 6; // pub_key_prefix
|
i += 6; // pub_key_prefix
|
||||||
@@ -1182,7 +1194,7 @@ void MyMesh::handleCmdFrame(size_t len) {
|
|||||||
if (result == MSG_SEND_FAILED) {
|
if (result == MSG_SEND_FAILED) {
|
||||||
writeErrFrame(ERR_CODE_TABLE_FULL);
|
writeErrFrame(ERR_CODE_TABLE_FULL);
|
||||||
} else {
|
} else {
|
||||||
pending_status = pending_login = 0;
|
pending_status = pending_login = pending_telemetry = 0;
|
||||||
pending_req = tag; // match this in onContactResponse()
|
pending_req = tag; // match this in onContactResponse()
|
||||||
out_frame[0] = RESP_CODE_SENT;
|
out_frame[0] = RESP_CODE_SENT;
|
||||||
out_frame[1] = (result == MSG_SEND_SENT_FLOOD) ? 1 : 0;
|
out_frame[1] = (result == MSG_SEND_SENT_FLOOD) ? 1 : 0;
|
||||||
|
|||||||
@@ -160,7 +160,8 @@ private:
|
|||||||
NodePrefs _prefs;
|
NodePrefs _prefs;
|
||||||
uint32_t pending_login;
|
uint32_t pending_login;
|
||||||
uint32_t pending_status;
|
uint32_t pending_status;
|
||||||
uint32_t pending_req; // pending _BINARY_REQ (or legacy _TELEMETRY_REQ)
|
uint32_t pending_telemetry; // pending _TELEMETRY_REQ
|
||||||
|
uint32_t pending_req; // pending _BINARY_REQ
|
||||||
BaseSerialInterface *_serial;
|
BaseSerialInterface *_serial;
|
||||||
|
|
||||||
ContactsIterator _iter;
|
ContactsIterator _iter;
|
||||||
|
|||||||
Reference in New Issue
Block a user