/** * * Send the KEEP message if SigFox is in data mode * */ static void sendToSfxKeep(void){ print_sfx("Sending KEEP\n\r"); sigFoxT *sfModel = getSigFoxModel(); sfModel->messageType = dataIntMessage; sfModel->message.dataMode.length=0; sfModel->message.dataMode.type = SIGFOX_KEEP; sfModel->message.dataMode.sequenceNumber = getNewSequenceNumber(); executeCDCSigFox(sfModel); }
static void enter_conf_mode(void) { port_pin_set_output_level(SME_LED_Y2_PIN, SME_LED_Y2_ACTIVE); sigFoxT *sfModel = getSigFoxModel(); sfModel->messageType = enterConfMode; sfModel->message.dataMode.type = SIGFOX_DATA; // point 1 sfModel->message.dataMode.length = sprintf(sfModel->message.dataMode.payload,"Smart"); //point 3 SEND !!!!!!!!!!! sfModel->message.dataMode.sequenceNumber = getNewSequenceNumber(); executeCDCSigFox(sfModel); }
// TODO Da Fare void SmeSFX::sfxSendKeep(void) { memset(message, 0 , sizeof(message)); //clear old message message[0] = SFX_MSG_HEADER; message[1] = 1; message[2] = SFX_KEEP; message[3] = getNewSequenceNumber(); // clear the rx buffer pointer answer.payloadPtr=0; memset(answer.payload, 0 , sizeof(answer.payload)); // store the message Id that will be sent /*sfxMessageIdx[KEEP_SEQUENCE_NUMBER] = message[3]; byte crcLen= insertCRC(&message[4+payloadLen], payload, SFX_DATA, message[3], payloadLen); message[4+payloadLen+crcLen] = SFX_MSG_TAILER;*/ sendSFXMsg((const char*)message, 4); }
byte SmeSFX::sfxSendData(const char payload[], byte payloadLen) { if (SFX_MAX_PAYLOAD<payloadLen) return SME_EINVAL; // too long payload memset(message, 0 , sizeof(message)); //clear old message message[0] = SFX_MSG_HEADER; message[1] = payloadLen; message[2] = SFX_DATA; message[3] = getNewSequenceNumber(); for (int i=0; i<payloadLen; i++) { message[4+i] = payload[i]; } // store the message Id that will be sent sfxMessageIdx[DATA_SEQUENCE_NUMBER] = message[3]; byte crcLen= insertCRC(&message[4+payloadLen], payload, SFX_DATA, message[3], payloadLen); // the 4 is due by the Header+payloadLen+DataType+Sequence message[4+payloadLen+crcLen] = SFX_MSG_TAILER; size_t messageLen = 4+payloadLen+crcLen +1; // add the Tailer, too // reset answer Fsm and Ackoledge dataAck = SFX_DATA_ACK_START; recFsm=headerRec; // clear the rx buffer pointer answer.payloadPtr=0; memset(answer.payload, 0 , sizeof(answer.payload)); // set the FSM to sending Data sfxMode = sfxDataMode; sendSFXMsg((const char*)message, messageLen); return 1; // just return true in first library release }