Anderson Cunha / sgam_mdw_NUCLEOF429ZI_impl

Dependencies:   MPU6050 Grove_temperature

Dependents:   sgam_mdw_test

communication/LoRaWanComm.cpp

Committer:
AndersonIctus
Date:
2019-07-07
Revision:
10:d2ce206bd94e
Parent:
8:e00fa6ea253c
Child:
11:14864dee8646

File content as of revision 10:d2ce206bd94e:

#include "sgam_mdw.h"
#include "mbed.h"
#include "mbed_events.h"
#include "LoRaWANInterface.h"

#include "LoRAWanComm.h"

LoRAWanComm::LoRAWanComm(const char* parameters) { } 
LoRAWanComm::~LoRAWanComm() { } 

int LoRAWanComm::initialize(LoraData* data) { 
    D_LOG("INITIALIZE %s! \r\n", this->getName() ); 

    // INICIANDO O LORAWAN !!
    this->data = data;
    if(data->getCallBack() == NULL) {
        D_LOG("Yoou must pass a call bak method to LoraData before of initialization process! \r\n");
        return FALSE;
    }

    lorawan = new LoRaWANInterface(*data->radio);

    // 1 - Initialize LoRaWAN stack
    if (lorawan->initialize(data->ev_queue) != LORAWAN_STATUS_OK) {
        D_LOG("LoRa initialization failed! \r\n");
        return FALSE;
    }

    D_LOG("Mbed LoRaWANStack initialized \r\n");

    // prepare application callbacks
    lorawan->add_app_callbacks( data->getCallBack() );

    // confirmed messages !!
    if(data->confirmed_msg_retries > 0)
        lorawan->set_confirmed_msg_retries(data->confirmed_msg_retries);

    // Enable adaptive data rate
    if(data->enable_adaptive_datarate) {
        if (lorawan->enable_adaptive_datarate() != LORAWAN_STATUS_OK) {
            D_LOG("enable_adaptive_datarate failed! \r\n");
            return FALSE;
        }

        D_LOG("Adaptive data  rate (ADR) - Enabled \r\n");
    }

    return TRUE;
}

int LoRAWanComm::finalize() { 
    D_LOG("FINALIZE %s! \r\n", this->getName() ); 

    if(lorawan != NULL) delete lorawan;

    return 1; 
}

const char* LoRAWanComm::getName() {
    return "LoRAWAN";
}

int LoRAWanComm::connect() { 
    if(data->connect_params == NULL) {
        D_LOG("Please, initialize the 'connect_params' in the LoraData instance before the connection process. \r\n");
        return FALSE;
    }

    return lorawan->connect(*data->connect_params);
}

int LoRAWanComm::disconnect() {
    return -1; // lorawan->dis
}

////////////////////////////////////////////////////////////////////////////////////
int LoRAWanComm::write(const char* data) {
    return 0;
}

int LoRAWanComm::read(char* buffer, int offset) {
    return 0;
}