* companion: 'self telemetry' request with CMD_SEND_TELEMETRY_REQ (with no pubkey param)
This commit is contained in:
@@ -1373,6 +1373,28 @@ void MyMesh::handleCmdFrame(size_t len) {
|
|||||||
} else {
|
} else {
|
||||||
writeErrFrame(ERR_CODE_NOT_FOUND); // contact not found
|
writeErrFrame(ERR_CODE_NOT_FOUND); // contact not found
|
||||||
}
|
}
|
||||||
|
} else if (cmd_frame[0] == CMD_SEND_TELEMETRY_REQ && len == 4) { // 'self' telemetry request
|
||||||
|
out_frame[0] = RESP_CODE_SENT;
|
||||||
|
out_frame[1] = 0;
|
||||||
|
uint32_t tag = 0, est_timeout = 50;
|
||||||
|
memcpy(&out_frame[2], &tag, 4);
|
||||||
|
memcpy(&out_frame[6], &est_timeout, 4);
|
||||||
|
_serial->writeFrame(out_frame, 10);
|
||||||
|
|
||||||
|
telemetry.reset();
|
||||||
|
telemetry.addVoltage(TELEM_CHANNEL_SELF, (float)board.getBattMilliVolts() / 1000.0f);
|
||||||
|
// query other sensors -- target specific
|
||||||
|
sensors.querySensors(0xFF, telemetry);
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
out_frame[i++] = PUSH_CODE_TELEMETRY_RESPONSE;
|
||||||
|
out_frame[i++] = 0; // reserved
|
||||||
|
memcpy(&out_frame[i], self_id.pub_key, 6);
|
||||||
|
i += 6; // pub_key_prefix
|
||||||
|
uint8_t tlen = telemetry.getSize();
|
||||||
|
memcpy(&out_frame[i], telemetry.getBuffer(), tlen);
|
||||||
|
i += tlen;
|
||||||
|
_serial->writeFrame(out_frame, i);
|
||||||
} else if (cmd_frame[0] == CMD_HAS_CONNECTION && len >= 1 + PUB_KEY_SIZE) {
|
} else if (cmd_frame[0] == CMD_HAS_CONNECTION && len >= 1 + PUB_KEY_SIZE) {
|
||||||
uint8_t *pub_key = &cmd_frame[1];
|
uint8_t *pub_key = &cmd_frame[1];
|
||||||
if (hasConnectionTo(pub_key)) {
|
if (hasConnectionTo(pub_key)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user