Send text with LoRaWAN.

Dependencies:   LMiC SX1276Lib mbed

Fork of LoRaWAN-lmic-app by Semtech

Committer:
tamberg
Date:
Wed Nov 11 18:32:46 2015 +0000
Revision:
13:d2eb917f9883
Parent:
12:020ffc39a19e
Added TTN default keys.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tamberg 11:0cc0f7b84c72 1 // License: Revised BSD License, see LICENSE.TXT, (c)2015 Semtech
mluis 0:a2929fa6e4f0 2
mluis 1:60184eda0066 3 #include "mbed.h"
mluis 0:a2929fa6e4f0 4 #include "lmic.h"
mluis 1:60184eda0066 5 #include "debug.h"
mluis 0:a2929fa6e4f0 6
tamberg 6:fbfc95b5c979 7 #define LORAWAN_NET_ID (uint32_t) 0x00000000
tamberg 13:d2eb917f9883 8 // TODO: enter device address below, for TTN just set ???
tamberg 13:d2eb917f9883 9 #define LORAWAN_DEV_ADDR (uint32_t) 0x5A480???
tamberg 6:fbfc95b5c979 10 #define LORAWAN_ADR_ON 1
tamberg 6:fbfc95b5c979 11 #define LORAWAN_CONFIRMED_MSG_ON 1
tamberg 13:d2eb917f9883 12 #define LORAWAN_APP_PORT 3//15
mluis 0:a2929fa6e4f0 13
tamberg 5:1f8829bd11ed 14 static uint8_t NwkSKey[] = {
tamberg 13:d2eb917f9883 15 // TODO: enter network, or use TTN default
tamberg 13:d2eb917f9883 16 // e.g. for 2B7E151628AED2A6ABF7158809CF4F3C =>
tamberg 13:d2eb917f9883 17 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
tamberg 13:d2eb917f9883 18 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
mluis 0:a2929fa6e4f0 19 };
mluis 0:a2929fa6e4f0 20
tamberg 5:1f8829bd11ed 21 static uint8_t ArtSKey[] = {
tamberg 13:d2eb917f9883 22 // TODO: enter application key, or use TTN default
tamberg 13:d2eb917f9883 23 // e.g. for 2B7E151628AED2A6ABF7158809CF4F3C =>
tamberg 13:d2eb917f9883 24 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
tamberg 13:d2eb917f9883 25 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
mluis 0:a2929fa6e4f0 26 };
mluis 0:a2929fa6e4f0 27
tamberg 9:fdd150f9db9e 28 osjob_t initjob;
mluis 0:a2929fa6e4f0 29 osjob_t sendFrameJob;
tamberg 9:fdd150f9db9e 30 u1_t n = 0;
mluis 0:a2929fa6e4f0 31
tamberg 7:4adfa7248a0b 32 void os_getArtEui (uint8_t *buf) {} // ignore
tamberg 7:4adfa7248a0b 33 void os_getDevEui (uint8_t *buf) {} // ignore
tamberg 7:4adfa7248a0b 34 void os_getDevKey (uint8_t *buf) {} // ignore
mluis 0:a2929fa6e4f0 35
tamberg 9:fdd150f9db9e 36 void onSendFrame (osjob_t* j) {
tamberg 12:020ffc39a19e 37 const char* message = "Hello"; // ASCII only
tamberg 12:020ffc39a19e 38 int frameLength = strlen(message); // keep it < 32
tamberg 11:0cc0f7b84c72 39 for (int i = 0; i < frameLength; i++) {
tamberg 12:020ffc39a19e 40 LMIC.frame[i] = message[i];
tamberg 10:576f275cfc14 41 }
tamberg 9:fdd150f9db9e 42 int result = LMIC_setTxData2(LORAWAN_APP_PORT, LMIC.frame,
tamberg 11:0cc0f7b84c72 43 frameLength, LORAWAN_CONFIRMED_MSG_ON); // calls onEvent()
mluis 0:a2929fa6e4f0 44 }
mluis 0:a2929fa6e4f0 45
tamberg 9:fdd150f9db9e 46 void onInit (osjob_t* j) {
tamberg 9:fdd150f9db9e 47 LMIC_reset();
tamberg 5:1f8829bd11ed 48 LMIC_setAdrMode(LORAWAN_ADR_ON);
tamberg 9:fdd150f9db9e 49 LMIC_setDrTxpow(DR_SF12, 14);
tamberg 9:fdd150f9db9e 50 LMIC_setSession(LORAWAN_NET_ID, LORAWAN_DEV_ADDR, NwkSKey, ArtSKey);
tamberg 5:1f8829bd11ed 51 onSendFrame(NULL);
mluis 1:60184eda0066 52 }
mluis 1:60184eda0066 53
tamberg 8:747796516a2f 54 void onEvent (ev_t ev) { // called by lmic.cpp, see also oslmic.h
tamberg 13:d2eb917f9883 55 debug_event(ev);
tamberg 9:fdd150f9db9e 56 if (ev == EV_TXCOMPLETE) {
tamberg 8:747796516a2f 57 os_setCallback(&sendFrameJob, onSendFrame);
tamberg 8:747796516a2f 58 }
tamberg 8:747796516a2f 59 }
tamberg 8:747796516a2f 60
tamberg 6:fbfc95b5c979 61 int main (void) {
tamberg 4:f83ad3eee79d 62 debug_str("main\r\n");
tamberg 5:1f8829bd11ed 63 os_init();
tamberg 5:1f8829bd11ed 64 os_setCallback(&initjob, onInit);
tamberg 5:1f8829bd11ed 65 os_runloop(); // blocking
tamberg 8:747796516a2f 66 }