Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: libmDot-Custom
Fork of mDot_LoRa_Connect_Example by
The project is a starting point for the AS923 channel plan.
Default frequencies are 923.2 and 923.4 Join Datarate is set to DR2:SF10BW125 Additional channels can be added in JoinAccept message or through new channel mac commands
New MAC commands in LoRaWAN 1.02 have NOT been included to set the DwellTime and MaxEIRP Overriding this function is available to someone who would like to do this. virtual uint8_t HandleMacCommands(uint8_t* payload, uint8_t index, uint8_t end_index);
main.cpp
- Committer:
 - mfiore
 - Date:
 - 2015-06-24
 - Revision:
 - 0:09250cd371d2
 - Child:
 - 2:6e2c378339d9
 
File content as of revision 0:09250cd371d2:
#include "mbed.h"
#include "mDot.h"
#include <string>
#include <vector>
// these options must match the settings on your Conduit in
// /var/config/lora/lora-network-server.conf
static std::string config_network_name = "<lora network id>";
static std::string config_network_pass = "<lora network key>";
static uint8_t config_frequency_sub_band = 1;
void log_error(mDot* dot, const char* msg, int32_t retval);
int main() {
    int32_t ret;
    mDot* dot;
    std::vector<uint8_t> data;
    std::string data_str = "hello world!";
    // get a mDot handle
    dot = mDot::getInstance();
    // reset to default config so we know what state we're in
    dot->resetConfig();
    
    // print library version information
    printf("version: %s\r\n", dot->getId().c_str());
    // set up the mDot with our network information
    printf("setting frequency sub band\r\n");
    if ((ret = dot->setFrequencySubBand(config_frequency_sub_band)) != mDot::MDOT_OK) {
        log_error(dot, "failed to set frequency sub band", ret);
    }
    printf("setting network name\r\n");
    if ((ret = dot->setNetworkName(config_network_name)) != mDot::MDOT_OK) {
        log_error(dot, "failed to set network name", ret);
    }
    printf("setting network password\r\n");
    if ((ret = dot->setNetworkPassphrase(config_network_pass)) != mDot::MDOT_OK) {
        log_error(dot, "failed to set network password", ret);
    }
    // attempt to join the network
    printf("joining network\r\n");
    while ((ret = dot->joinNetwork()) != mDot::MDOT_OK) {
        log_error(dot, "failed to join network", ret);
        wait(2);
    }
    // format data for sending to the gateway
    for (std::string::iterator it = data_str.begin(); it != data_str.end(); it++)
        data.push_back((uint8_t) *it);
    while (true) {
        // send the data
        // ACKs are enabled by default, so we're expecting to get one back
        if ((ret = dot->send(data)) != mDot::MDOT_OK) {
            log_error(dot, "failed to send", ret);
        } else {
            printf("successfully sent data to gateway\r\n");
        }
        wait(5);
    }
    return 0;
}
void log_error(mDot* dot, const char* msg, int32_t retval) {
    printf("%s - %ld:%s, %s\r\n", msg, retval, mDot::getReturnCodeString(retval).c_str(), dot->getLastError().c_str());
}
            
    