Skip to content

Commit

Permalink
Refactor/adjusted lorawan_node
Browse files Browse the repository at this point in the history
  • Loading branch information
KwintenSchram committed Oct 12, 2018
1 parent ebafde6 commit d4f0f70
Show file tree
Hide file tree
Showing 7 changed files with 96 additions and 169 deletions.
Empty file modified docs/css/main.scss 100755 → 100644
Empty file.
22 changes: 18 additions & 4 deletions stack/apps/lorawan_node/lorawan_node.c
Expand Up @@ -22,8 +22,10 @@
#include "scheduler.h"
#include "timeServer.h"
#include "timer.h"
#include "string.h"

// TODO
lorawan_session_config_t lorawan_session_config;
static uint8_t devEui[] = { 0xBE, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x81 };
static uint8_t appEui[] = { 0xBE, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x9F };
static uint8_t appKey[] = { 0x7E, 0xEF, 0x56, 0xEC, 0xDA, 0x1D, 0xD5, 0xA4, 0x70, 0x59, 0xFD, 0x35, 0x9C, 0xE6, 0x80, 0xCD };
Expand All @@ -43,21 +45,33 @@ void read_sensor_task() {
timer_post_task_delay(&read_sensor_task, 60 * TIMER_TICKS_PER_SEC);
}

void on_join_completed(bool success) {
void on_join_completed(bool success,uint8_t app_port,bool request_ack) {
if(!success) {
log_print_string("join failed");
// ...
} else {
log_print_string("join succeeded");
}
}
void lorwan_rx(lorawan_AppData_t *AppData)
{
DPRINT("RECEIVED DATA"); //TODO
}
void lorwan_tx(bool error)
{
DPRINT("RECEIVED DATA"); //TODO
}

void bootstrap()
{
log_print_string("Device booted\n");

lorawan_stack_init(devEui, appEui, appKey, &on_join_completed, NULL);
lorawan_session_config.activationMethod=OTAA;
memcpy(&lorawan_session_config.devEUI,devEui ,8);
memcpy(&lorawan_session_config.appEUI, appEui,8);
memcpy(&lorawan_session_config.appKey,appKey,16);
lorawan_register_cbs(lorwan_rx,lorwan_tx,on_join_completed);
lorawan_stack_init(&lorawan_session_config);

sched_register_task(&read_sensor_task);
timer_post_task_delay(&read_sensor_task, 60 * TIMER_TICKS_PER_SEC);
}
}
15 changes: 7 additions & 8 deletions stack/framework/inc/lorawan_stack.h
Expand Up @@ -30,7 +30,7 @@ typedef struct
/*Port on which the LoRa App is data is sent/ received*/
uint8_t Port;

} lora_AppData_t;
} lorawan_AppData_t;

typedef enum {
LORAWAN_STACK_ERROR_OK,
Expand All @@ -55,19 +55,18 @@ typedef struct {
uint32_t network_id;
bool request_ack;
uint8_t application_port;
} lora_session_config_t;
} lorawan_session_config_t;

typedef void (*lora_rx_callback_t)(lora_AppData_t *AppData);
typedef void (*lorawan_rx_callback_t)(lorawan_AppData_t *AppData);
typedef void (*join_completed_callback_t)(bool success,uint8_t app_port2,bool request_ack2);
typedef void (*lora_tx_completed_callback_t)(bool error);
typedef void (*lorawan_tx_completed_callback_t)(bool error);


void lorawan_stack_init(uint8_t devEUI[8], uint8_t appEUI[8], uint8_t appKey[16], join_completed_callback_t join_failed_cb, lora_rx_callback_t cb);
bool refresh_lorawan_session_config(lora_session_config_t* lora_session_config);
void lorawan_stack_init2(lora_session_config_t* activationKeys);
bool lorawan_is_joined(lorawan_session_config_t* lorawan_session_config);
void lorawan_stack_init(lorawan_session_config_t* activationKeys);
void lorawan_stack_deinit();
bool lorawan_stack_join();
void lora_register_cbs(lora_rx_callback_t lora_rx_cb, lora_tx_completed_callback_t lora_tx_cb, join_completed_callback_t join_completed_cb);
void lorawan_register_cbs(lorawan_rx_callback_t lorawan_rx_cb, lorawan_tx_completed_callback_t lorawan_tx_cb, join_completed_callback_t join_completed_cb);
lorawan_stack_error_t lorawan_stack_send(uint8_t* payload, uint8_t length, uint8_t app_port, bool request_ack);

#endif //LORAWAN_STACK_H
Expand Down
38 changes: 19 additions & 19 deletions stack/modules/alp/alp_layer.c
Expand Up @@ -84,7 +84,7 @@ void alp_layer_process_response_from_d7ap(uint16_t trans_id, uint8_t* alp_comman
bool alp_layer_process_command_from_d7ap(uint8_t* alp_command, uint8_t alp_command_length, d7ap_session_result_t d7asp_result);
void alp_layer_command_completed(uint16_t trans_id, error_t error);

void lorwan_rx(lora_AppData_t *AppData);
void lorwan_rx(lorawan_AppData_t *AppData);
void alp_layer_command_completed_from_lorawan(bool error);
void lorawan_join_completed(bool success,uint8_t app_port2,bool request_ack2);

Expand Down Expand Up @@ -144,7 +144,7 @@ void alp_layer_init(alp_init_args_t* alp_init_args, bool is_shell_enabled)
};

#ifdef MODULE_LORAWAN
lora_register_cbs(lorwan_rx,alp_layer_command_completed_from_lorawan, lorawan_join_completed);
lorawan_register_cbs(lorwan_rx,alp_layer_command_completed_from_lorawan, lorawan_join_completed);
#endif

alp_client_id = d7ap_register(&alp_desc);
Expand Down Expand Up @@ -404,24 +404,24 @@ static alp_status_codes_t process_op_forward(alp_command_t* command, uint8_t* it
case ALP_ITF_ID_LORWAN:

err = fifo_pop(&command->alp_command_fifo, &session_config_flags, 1); assert(err == SUCCESS);
session_config->lora_session_config.activationMethod=session_config_flags & (1<<activationBitLocation);
session_config->lora_session_config.request_ack=session_config_flags & (1<<requestAckBitLocation);
err = fifo_pop(&command->alp_command_fifo, &session_config->lora_session_config.application_port, 1); assert(err == SUCCESS);
session_config->lorawan_session_config.activationMethod=session_config_flags & (1<<activationBitLocation);
session_config->lorawan_session_config.request_ack=session_config_flags & (1<<requestAckBitLocation);
err = fifo_pop(&command->alp_command_fifo, &session_config->lorawan_session_config.application_port, 1); assert(err == SUCCESS);

if(&session_config->lora_session_config.activationMethod==OTAA)
if(session_config->lorawan_session_config.activationMethod==OTAA)
{
err = fifo_pop(&command->alp_command_fifo, &session_config->lora_session_config.devEUI, 8); assert(err == SUCCESS);
err = fifo_pop(&command->alp_command_fifo, &session_config->lora_session_config.appEUI, 8); assert(err == SUCCESS);
err = fifo_pop(&command->alp_command_fifo, &session_config->lora_session_config.appKey, 16); assert(err == SUCCESS);
err = fifo_pop(&command->alp_command_fifo, session_config->lorawan_session_config.devEUI, 8); assert(err == SUCCESS);
err = fifo_pop(&command->alp_command_fifo, session_config->lorawan_session_config.appEUI, 8); assert(err == SUCCESS);
err = fifo_pop(&command->alp_command_fifo, session_config->lorawan_session_config.appKey, 16); assert(err == SUCCESS);
}
else
{
err = fifo_pop(&command->alp_command_fifo, &session_config->lora_session_config.nwkSKey, 16); assert(err == SUCCESS);
err = fifo_pop(&command->alp_command_fifo, &session_config->lora_session_config.appSKey, 16); assert(err == SUCCESS);
err = fifo_pop(&command->alp_command_fifo, &session_config->lora_session_config.devAddr, 4); assert(err == SUCCESS);
session_config->lora_session_config.devAddr=__builtin_bswap32(session_config->lora_session_config.devAddr);
err = fifo_pop(&command->alp_command_fifo, &session_config->lora_session_config.network_id, 4); assert(err == SUCCESS);
session_config->lora_session_config.network_id=__builtin_bswap32(session_config->lora_session_config.network_id);
err = fifo_pop(&command->alp_command_fifo, session_config->lorawan_session_config.nwkSKey, 16); assert(err == SUCCESS);
err = fifo_pop(&command->alp_command_fifo, session_config->lorawan_session_config.appSKey, 16); assert(err == SUCCESS);
err = fifo_pop(&command->alp_command_fifo, &session_config->lorawan_session_config.devAddr, 4); assert(err == SUCCESS);
session_config->lorawan_session_config.devAddr=__builtin_bswap32(session_config->lorawan_session_config.devAddr);
err = fifo_pop(&command->alp_command_fifo, &session_config->lorawan_session_config.network_id, 4); assert(err == SUCCESS);
session_config->lorawan_session_config.network_id=__builtin_bswap32(session_config->lorawan_session_config.network_id);
}

DPRINT("FORWARD LORAWAN");
Expand Down Expand Up @@ -653,18 +653,18 @@ static bool alp_layer_parse_and_execute_alp_command(alp_command_t* command)
d7ap_stop();
d7ap_interface_state=STATE_NOT_INITIALIZED;
}
lorawan_stack_init2(&session_config.lora_session_config);
lorawan_stack_init(&session_config.lorawan_session_config);
lorawan_interface_state=STATE_INITIALIZED;
send_on_join=true;
} else {
bool changed=refresh_lorawan_session_config(&session_config.lora_session_config);
bool changed=lorawan_is_joined(&session_config.lorawan_session_config);
if (changed){
send_on_join=true;
} else {
uint8_t forwarded_alp_size = fifo_get_size(&command->alp_command_fifo);
uint8_t forwarded_alp_actions[forwarded_alp_size];
fifo_pop(&command->alp_command_fifo, forwarded_alp_actions, forwarded_alp_size);
lorawan_stack_error_t e = lorawan_stack_send(forwarded_alp_actions, forwarded_alp_size, session_config.lora_session_config.application_port, session_config.lora_session_config.request_ack);
lorawan_stack_error_t e = lorawan_stack_send(forwarded_alp_actions, forwarded_alp_size, session_config.lorawan_session_config.application_port, session_config.lorawan_session_config.request_ack);
if(e !=LORAWAN_STACK_ERROR_OK )
alp_layer_command_completed_from_lorawan(NULL);
}
Expand Down Expand Up @@ -800,7 +800,7 @@ void alp_layer_command_completed(uint16_t trans_id, error_t error) {
}

#ifdef MODULE_LORAWAN
void lorwan_rx(lora_AppData_t *AppData)
void lorwan_rx(lorawan_AppData_t *AppData)
{
DPRINT("RECEIVED DATA"); //TODO
}
Expand Down
2 changes: 1 addition & 1 deletion stack/modules/alp/alp_layer.h
Expand Up @@ -56,7 +56,7 @@ typedef enum

typedef union {
d7ap_session_config_t d7asp_session_config;
lora_session_config_t lora_session_config;
lorawan_session_config_t lorawan_session_config;
}session_config_t;

typedef void (*alp_command_completed_callback)(uint8_t tag_id, bool success);
Expand Down

0 comments on commit d4f0f70

Please sign in to comment.