nkjnm
Dependencies: MAX44000 nexpaq_mdk
Fork of LED_Demo by
Diff: nexpaq_mdk_src/source/np_apis.c
- Revision:
- 0:b86eda0e990d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nexpaq_mdk_src/source/np_apis.c Sat Sep 17 16:21:40 2016 +0000 @@ -0,0 +1,207 @@ +/* + * np_apis.c + * + * Created on: July 14, 2016 + * Author: Alan.Lin + * + * Copyright: NexPack Ltd. + */ + +#include "np_apis.h" +#include "np_app_ncn_interface.h" +#include "np_app_spi.h" +#include "np_system.h" + +MDK_REGISTER_CMD *mdk_cmd_func_table_ptr; +uint8_t mdk_cmd_func_number; + +/* + * Description: APP to set firmware version of APP by the api + * Parameter: null + * Return: null + */ +void np_api_set_app_version(uint8_t HV, uint8_t MV, uint8_t LV) { + mdk_app_version[0] = HV; + mdk_app_version[1] = MV; + mdk_app_version[2] = LV; +} + +/* + * Description: APP to register processing function of command by the api + * Parameter: + * cmd_func_table: pointer of the space for hold the pointer of processing functions. + * num : the number of the processing function. + * + * Return: 0-success; 1-fail + */ +uint8_t np_api_register(MDK_REGISTER_CMD* cmd_func_table, uint8_t num) { + uint8_t t_i = 0; + uint8_t t_num = num; + + for ( ; t_i < t_num; t_i++ ) { + if ( (cmd_func_table[t_i].command > 0x27ff) || (cmd_func_table[t_i].command < 0x2700) ) { + return 1; + } + } + mdk_cmd_func_table_ptr = cmd_func_table; + mdk_cmd_func_number = num; + + return 0; +} + +/* + * Description: APP to upload message to Phone/ble by the api + * Parameter : + * rcmd : The command of the message. + * pData: Pointer of the space for hold the parameter of the message. + * pLen : The length of the "pData" + * + * Return : 0-success; 1-fail + */ +uint8_t np_api_upload(uint16_t rcmd, uint8_t *pData, uint8_t pLen) { + // Over the fifo buffer + if ( spi_post_buf.used_buffer_length + pLen > FIFO_BUFFER_OVERLOAD ) + return 1; + np_function_ncn_interface_post_message(rcmd, pData, pLen); + + return 0; +} + +/* + * Description: APP to upload data to Gateway by the api + * Parameter : + * rcmd : The command of the message. + * pData: Pointer of the space for hold the parameter of the message. + * pLen : The length of the "pData" + * + * Return : 0-success; 1-fail + + */ +uint8_t np_api_upload_to_station(uint16_t rcmd, uint8_t *pData, uint8_t pLen) { + // Over the fifo buffer + if ( spi_post_buf.used_buffer_length + pLen > FIFO_BUFFER_OVERLOAD ) + return 1; + np_function_ncn_interface_post_message_to_station(rcmd, pData, pLen); + + return 0; +} + +/* + * Description:APP set a manually output address for next POST message + * Parameter: null + * Return: null + */ +void np_api_set_post_address(uint8_t address) { + source_address = address; +} + +/* + * Description: system initial ,include MDK initial and app initial + * Parameter: null + * Return: null + */ +void np_api_setup(app_function np_app_setup){ + np_system_initial(np_app_setup); +} + +/* + * Description: system loop function, will loop forever. + * Parameter: null + * Return: null + */ +void np_api_loop(app_function np_app_loop){ + np_system_loop(np_app_loop); +} + +/* + * Description: initialize + * Parameter: null + * Return: null + */ +void np_api_init(){ + np_sys_init(); +} + +/* + * Description: signal ready + * Parameter: null + * Return: null + */ +void np_api_start(){ + np_sys_start(); +} + +/* + * Description: bootloader check + * Parameter: null + * Return: null + */ +void np_api_bsl_chk(){ + np_sys_bsl_chk(); +} + +#if 0 +/* + * Description: API to set auto enter lpm0 mode + * Parameter: null + * Return: null + */ +void np_api_lpm0_automode_set(void) { + np_function_lpm0_automode_set(); +} + +/* + * Description: API to set auto exit lpm0 mode + * Parameter: null + * Return: null + */ +void np_api_lpm0_automode_clear(void) { + np_function_lpm0_automode_clear(); +} + + +uint8_t np_api_lpm_mode_get(void){ + return np_function_pm_mode_get(); +} + +/* + * Description: API to get the sleep status about sleeping on lpm0 or lpm4 + * Parameter: null + * Return: LPM0/LPM4/LPM_NONE + */ +uint8_t np_api_lpm_status_get(void){ + return np_function_get_lpm_status(); +} + +void np_mdk_set_run_the_loop(uint8_t t_data){ + np_function_set_run_the_loop(t_data); +} + +void np_mdk_start_loop_head_set(void){ + wakeup_run_loop_flag = 1; +} + +void np_mdk_lpm4_automode_clear_flag(void){ + np_function_lpm4_automode_clear(); +} + +void np_api_lpm4_automode_set(void) { + if(np_function_pm_mode_get() & LPM_0){ + np_mdk_set_run_the_loop(TRUE);//if developer set lpm4 on interrupt and firmware is running on lpm0,need wakup lpm0 and enter lpm4 + } + + np_function_lpm4_automode_set(); + developer_lpm4_setting = 1; +} + +void np_api_lpm4_automode_clear(void) { + np_mdk_lpm4_automode_clear_flag(); + np_mdk_start_loop_head_set(); + developer_lpm4_setting = 0; +} + +void np_mdk_exit_lpm4_work(void){ + np_function_exit_lpm4_work(); +} + +#endif