コード例 #1
0
/**
*
* 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);
    
}
コード例 #2
0
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);
}
コード例 #3
0
// 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);
}
コード例 #4
0
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
}