Skip to content

Instantly share code, notes, and snippets.

@alnunez
Created October 26, 2020 01:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alnunez/2c202541e1e81dcda9f70f11a03be1ff to your computer and use it in GitHub Desktop.
Save alnunez/2c202541e1e81dcda9f70f11a03be1ff to your computer and use it in GitHub Desktop.
RAK4200 RUI TEST
#include "rui.h"
#include "board.h"
static RUI_RETURN_STATUS rui_return_status;
#define SWITCH_1 3
RUI_GPIO_ST Switch_One; // ext interupt switch #1
const uint8_t level[2]={0,1};
#define low &level[0]
#define high &level[1]
void handle_int_sw1(void)
{
RUI_LOG_PRINTF("sw1 int fired! \r\n");
}
void bsp_di_init(void)
{
Switch_One.pin_num = SWITCH_1;
Switch_One.dir = RUI_GPIO_PIN_DIR_INPUT;
Switch_One.pull = RUI_GPIO_PIN_NOPULL;
rui_return_status=rui_gpio_interrupt(true,Switch_One,RUI_GPIO_EDGE_FALL_RAISE,RUI_GPIO_IRQ_LOW_PRIORITY,handle_int_sw1);
RUI_LOG_PRINTF("rui_return = %d\r\n",rui_return_status);
rui_return_status=rui_gpio_init(&Switch_One);
RUI_LOG_PRINTF("rui_return = %d\r\n",rui_return_status);
}
/*******************************************************************************************
* LoRaMac callback functions
* * void LoRaReceive_callback(RUI_RECEIVE_T* Receive_datapackage);//LoRaWAN callback if receive data
* * void LoRaP2PReceive_callback(RUI_LORAP2P_RECEIVE_T *Receive_P2Pdatapackage);//LoRaP2P callback if receive data
* * void LoRaWANJoined_callback(uint32_t status);//LoRaWAN callback after join server request
* * void LoRaWANSendsucceed_callback(RUI_MCPS_T status);//LoRaWAN call back after send data complete
* *****************************************************************************************/
void LoRaReceive_callback(RUI_RECEIVE_T* Receive_datapackage)
{
char hex_str[3] = {0};
RUI_LOG_PRINTF("at+recv=%d,%d,%d,%d", Receive_datapackage->Port, Receive_datapackage->Rssi, Receive_datapackage->Snr, Receive_datapackage->BufferSize);
if ((Receive_datapackage->Buffer != NULL) && Receive_datapackage->BufferSize) {
RUI_LOG_PRINTF(":");
for (int i = 0; i < Receive_datapackage->BufferSize; i++) {
sprintf(hex_str, "%02x", Receive_datapackage->Buffer[i]);
RUI_LOG_PRINTF("%s", hex_str);
}
}
RUI_LOG_PRINTF("\r\n");
}
void LoRaP2PReceive_callback(RUI_LORAP2P_RECEIVE_T *Receive_P2Pdatapackage)
{
char hex_str[3]={0};
RUI_LOG_PRINTF("at+recv=%d,%d,%d:", Receive_P2Pdatapackage -> Rssi, Receive_P2Pdatapackage -> Snr, Receive_P2Pdatapackage -> BufferSize);
for(int i=0;i < Receive_P2Pdatapackage -> BufferSize; i++)
{
sprintf(hex_str, "%02X", Receive_P2Pdatapackage -> Buffer[i]);
RUI_LOG_PRINTF("%s",hex_str);
}
RUI_LOG_PRINTF("\r\n");
}
void LoRaWANJoined_callback(uint32_t status)
{
static int8_t dr;
if(status) //Join Success
{
RUI_LOG_PRINTF("OK Join Success\r\n");
}else
{
RUI_LOG_PRINTF("ERROR: %d\r\n",RUI_AT_LORA_INFO_STATUS_JOIN_FAIL);
}
}
void LoRaWANSendsucceed_callback(RUI_MCPS_T mcps_type,RUI_RETURN_STATUS status)
{
if(status == RUI_STATUS_OK)
{
switch( mcps_type )
{
case RUI_MCPS_UNCONFIRMED:
{
RUI_LOG_PRINTF("OK\r\n");
break;
}
case RUI_MCPS_CONFIRMED:
{
RUI_LOG_PRINTF("OK\r\n");
break;
}
case RUI_MCPS_PROPRIETARY:
{
RUI_LOG_PRINTF("OK\r\n");
break;
}
case RUI_MCPS_MULTICAST:
{
RUI_LOG_PRINTF("OK\r\n");
break;
}
default:
break;
}
}
else if(status != RUI_AT_LORA_INFO_STATUS_ADDRESS_FAIL)
{
RUI_LOG_PRINTF("ERROR: %d\r\n",status);
}
}
void LoRaP2PSendsucceed_callback(void)
{
RUI_LOG_PRINTF("OK \r\n");
}
/*******************************************************************************************
* If the uart is in RUI_UART_USER mode, this interface will be called.
*
* *****************************************************************************************/
void rui_uart_recv(RUI_UART_DEF uart_def, uint8_t *pdata, uint16_t len)
{
switch(uart_def)
{
case RUI_UART1:
break;
case RUI_UART2:
break;
}
}
/*******************************************************************************************
* sleep and wakeup callback
*
* *****************************************************************************************/
void bsp_sleep(void)
{
/*****************************************************************************
* user process code before enter sleep
******************************************************************************/
}
void bsp_wakeup(void)
{
/*****************************************************************************
* user process code after exit sleep
******************************************************************************/
}
/*******************************************************************************************
* the app_main function
* *****************************************************************************************/
void main(void)
{
RUI_LORA_STATUS_T app_lora_status;
rui_init();
bsp_di_init();
/*******************************************************************************************
* Register LoRaMac callback function
*
* *****************************************************************************************/
rui_lora_register_recv_callback(LoRaReceive_callback);
rui_lorap2p_register_recv_callback(LoRaP2PReceive_callback);
rui_lorajoin_register_callback(LoRaWANJoined_callback);
rui_lorasend_complete_register_callback(LoRaWANSendsucceed_callback);
rui_lorap2p_complete_register_callback(LoRaP2PSendsucceed_callback);
/*******************************************************************************************
* Register Sleep and Wakeup callback function
*
* *****************************************************************************************/
rui_sensor_register_callback(bsp_wakeup, bsp_sleep);
/*******************************************************************************************
* Obtain status information and print.
*
* *****************************************************************************************/
rui_lora_get_status(false, &app_lora_status);
switch(app_lora_status.work_mode)
{
case RUI_LORAWAN:
RUI_LOG_PRINTF("Current work_mode:LoRaWAN,");
if(app_lora_status.join_mode == RUI_OTAA)
{
RUI_LOG_PRINTF(" join_mode:OTAA,");
if(app_lora_status.MulticastEnable)
{
RUI_LOG_PRINTF(" MulticastEnable:true.\r\n");
}
else
{
RUI_LOG_PRINTF(" MulticastEnable: false,");
switch(app_lora_status.class_status)
{
case RUI_CLASS_A:RUI_LOG_PRINTF(" Class: A\r\n");
break;
case RUI_CLASS_B:RUI_LOG_PRINTF(" Class: B\r\n");
break;
case RUI_CLASS_C:RUI_LOG_PRINTF(" Class: C\r\n");
break;
default:break;
}
}
}
else if(app_lora_status.join_mode == RUI_ABP)
{
RUI_LOG_PRINTF(" join_mode:ABP,");
if(app_lora_status.MulticastEnable)
{
RUI_LOG_PRINTF(" MulticastEnable:true.\r\n");
}
else
{
RUI_LOG_PRINTF(" MulticastEnable: false,");
switch(app_lora_status.class_status)
{
case RUI_CLASS_A:RUI_LOG_PRINTF(" Class: A\r\n");
break;
case RUI_CLASS_B:RUI_LOG_PRINTF(" Class: B\r\n");
break;
case RUI_CLASS_C:RUI_LOG_PRINTF(" Class: C\r\n");
break;
default:break;
}
}
}
break;
case RUI_P2P:
RUI_LOG_PRINTF("Current work_mode:P2P\r\n");
if (g_lora_config.LoraP2PParams.p2p_workmode == 1)
{
RUI_LOG_PRINTF("LoRa P2P Transfer_mode: Receiver\r\n");
}
else
{
RUI_LOG_PRINTF("LoRa P2P Transfer_mode: Sender\r\n");
}
break;
default: break;
}
RUI_LOG_PRINTF("Initialization OK\r\n\r\n");
while(1)
{
rui_running();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment