#include "debug.h" #include "common.h" #include "moc_api.h" #include "moc_api_sep.h" static kernel_api_t _kernel_api; static mico_system_config_t* _system_config_get( void ) { static mico_system_config_t cfg; // _kernel_api.os_apis->system_config(0, &cfg); printf("config get\r\n"); return &cfg; } static void _system_config_set( mico_system_config_t *cfg ) { //_kernel_api.os_apis->system_config(1, cfg); printf("config set"); } #ifndef MICO_DISABLE_STDIO #ifndef STDIO_BUFFER_SIZE #define STDIO_BUFFER_SIZE 64 #endif static const platform_uart_config_t stdio_uart_config = { .baud_rate = STDIO_UART_BAUDRATE, .data_width = DATA_WIDTH_8BIT, .parity = NO_PARITY, .stop_bits = STOP_BITS_1, .flow_control = FLOW_CONTROL_DISABLED, .flags = 0, }; static volatile ring_buffer_t stdio_rx_buffer; static volatile uint8_t stdio_rx_data[STDIO_BUFFER_SIZE]; void init_debug_uart(void) { ring_buffer_init( (ring_buffer_t*) &stdio_rx_buffer, (uint8_t*) stdio_rx_data, STDIO_BUFFER_SIZE ); MicoUartInitialize(STDIO_UART, &stdio_uart_config, (ring_buffer_t*) &stdio_rx_buffer ); } #else void init_debug_uart(void) { return; } #endif mico_api_t *moc_adapter(new_mico_api_t *new_mico_api) { static mico_api_t mico_api; new_mico_api->mico_api_get(API_VERSION_V1, &_kernel_api); /* automatically generated by python script */ mico_api.library_version = new_mico_api->library_version; mico_api.system_config_get = _system_config_get; mico_api.system_config_set = _system_config_set; mico_api.mxchipInit = (void(*)())_kernel_api.os_apis->mxchipInit; mico_api.mico_rtos_create_thread = (int (*)(void **, uint8_t, char const *, void (*)(uint32_t), uint32_t, void *))_kernel_api.os_apis->mico_rtos_create_thread; mico_api.mico_rtos_delete_thread = _kernel_api.os_apis->mico_rtos_delete_thread; mico_api.mico_rtos_suspend_thread = _kernel_api.os_apis->mico_rtos_suspend_thread; mico_api.mico_rtos_suspend_all_thread = _kernel_api.os_apis->mico_rtos_suspend_all_thread; mico_api.mico_rtos_resume_all_thread = (long(*)(void))_kernel_api.os_apis->mico_rtos_resume_all_thread; mico_api.mico_rtos_thread_join = _kernel_api.os_apis->mico_rtos_thread_join; mico_api.mico_rtos_thread_force_awake = _kernel_api.os_apis->mico_rtos_thread_force_awake; mico_api.mico_rtos_is_current_thread = _kernel_api.os_apis->mico_rtos_is_current_thread; mico_api.mico_thread_sleep = _kernel_api.os_apis->mico_thread_sleep; mico_api.mico_thread_msleep = _kernel_api.os_apis->mico_thread_msleep; mico_api.mico_rtos_init_semaphore = _kernel_api.os_apis->mico_rtos_init_semaphore; mico_api.mico_rtos_set_semaphore = _kernel_api.os_apis->mico_rtos_set_semaphore; mico_api.mico_rtos_get_semaphore = _kernel_api.os_apis->mico_rtos_get_semaphore; mico_api.mico_rtos_deinit_semaphore = _kernel_api.os_apis->mico_rtos_deinit_semaphore; mico_api.mico_rtos_init_mutex = _kernel_api.os_apis->mico_rtos_init_mutex; mico_api.mico_rtos_lock_mutex = _kernel_api.os_apis->mico_rtos_lock_mutex; mico_api.mico_rtos_unlock_mutex = _kernel_api.os_apis->mico_rtos_unlock_mutex; mico_api.mico_rtos_deinit_mutex = _kernel_api.os_apis->mico_rtos_deinit_mutex; mico_api.mico_rtos_init_queue = _kernel_api.os_apis->mico_rtos_init_queue; mico_api.mico_rtos_push_to_queue = _kernel_api.os_apis->mico_rtos_push_to_queue; mico_api.mico_rtos_pop_from_queue = _kernel_api.os_apis->mico_rtos_pop_from_queue; mico_api.mico_rtos_deinit_queue = _kernel_api.os_apis->mico_rtos_deinit_queue; mico_api.mico_rtos_is_queue_empty = _kernel_api.os_apis->mico_rtos_is_queue_empty; mico_api.mico_rtos_is_queue_full = (int (*)(void * *))_kernel_api.os_apis->mico_rtos_is_queue_full; mico_api.mico_get_time = _kernel_api.os_apis->mico_get_time; mico_api.mico_init_timer = _kernel_api.os_apis->mico_init_timer; mico_api.mico_start_timer = _kernel_api.os_apis->mico_start_timer; mico_api.mico_stop_timer = _kernel_api.os_apis->mico_stop_timer; mico_api.mico_reload_timer = _kernel_api.os_apis->mico_reload_timer; mico_api.mico_deinit_timer = _kernel_api.os_apis->mico_deinit_timer; mico_api.mico_is_timer_running = _kernel_api.os_apis->mico_is_timer_running; mico_api.mico_create_event_fd = _kernel_api.os_apis->mico_create_event_fd; mico_api.mico_delete_event_fd = _kernel_api.os_apis->mico_delete_event_fd; mico_api.SetTimer = NULL; mico_api.SetTimer_uniq = NULL; mico_api.UnSetTimer = NULL; mico_api.mico_memory_info = (micoMemInfo_t* (*)( void ))_kernel_api.os_apis->mico_memory_info; mico_api.malloc = _kernel_api.os_apis->malloc; mico_api.realloc = _kernel_api.os_apis->realloc; mico_api.free = _kernel_api.os_apis->free; mico_api.calloc = (void *(*)(int, int))_kernel_api.os_apis->calloc; mico_api.heap_insert = _kernel_api.os_apis->heap_insert; mico_api.socket = NULL; mico_api.setsockopt = NULL; mico_api.getsockopt = NULL; mico_api.bind = NULL; mico_api.connect = NULL; mico_api.listen = NULL; mico_api.accept = NULL; mico_api.select = NULL; mico_api.send = NULL; mico_api.write = NULL; mico_api.sendto = NULL; mico_api.recv = NULL; mico_api.read = NULL; mico_api.recvfrom = NULL; mico_api.close = NULL; mico_api.inet_addr = NULL; mico_api.inet_ntoa = NULL; mico_api.gethostbyname = NULL; mico_api.set_tcp_keepalive = NULL; mico_api.get_tcp_keepalive = NULL; mico_api.lwip_apis = _kernel_api.lwip_apis; mico_api.ssl_set_cert = _kernel_api.ssl_crypto_apis->ssl_set_cert; mico_api.ssl_connect = _kernel_api.ssl_crypto_apis->ssl_connect; mico_api.ssl_accept = _kernel_api.ssl_crypto_apis->ssl_accept; mico_api.ssl_send = _kernel_api.ssl_crypto_apis->ssl_send; mico_api.ssl_recv = _kernel_api.ssl_crypto_apis->ssl_recv; mico_api.ssl_close = _kernel_api.ssl_crypto_apis->ssl_close; mico_api.set_ssl_client_version = _kernel_api.ssl_crypto_apis->set_ssl_client_version; mico_api.ssl_nonblock_connect = _kernel_api.ssl_crypto_apis->ssl_nonblock_connect; mico_api.ssl_set_using_nonblock = _kernel_api.ssl_crypto_apis->ssl_set_using_nonblock; mico_api.ssl_pending = _kernel_api.ssl_crypto_apis->ssl_pending; mico_api.ssl_get_error = _kernel_api.ssl_crypto_apis->ssl_get_error; mico_api.ssl_set_client_cert = _kernel_api.ssl_crypto_apis->ssl_set_client_cert; mico_api.ssl_connect_sni = _kernel_api.ssl_crypto_apis->ssl_connect_sni; mico_api.InitMd5 = (void (*)(md5_context*))_kernel_api.ssl_crypto_apis->InitMd5; mico_api.Md5Update = (void (*)(md5_context*,unsigned char*, int))_kernel_api.ssl_crypto_apis->Md5Update; mico_api.Md5Final = (void (*)(md5_context*,uint8_t*))_kernel_api.ssl_crypto_apis->Md5Final; mico_api.Md5Hash = _kernel_api.ssl_crypto_apis->Md5Hash; mico_api.AesEncryptDirect = _kernel_api.ssl_crypto_apis->AesEncryptDirect; mico_api.AesDecryptDirect = _kernel_api.ssl_crypto_apis->AesDecryptDirect; mico_api.AesSetKeyDirect = _kernel_api.ssl_crypto_apis->AesSetKeyDirect; mico_api.aes_encrypt = _kernel_api.ssl_crypto_apis->aes_encrypt; mico_api.aes_decrypt = _kernel_api.ssl_crypto_apis->aes_decrypt; mico_api.AesSetKey = _kernel_api.ssl_crypto_apis->AesSetKey; mico_api.AesSetIV = _kernel_api.ssl_crypto_apis->AesSetIV; mico_api.AesCbcEncrypt = _kernel_api.ssl_crypto_apis->AesCbcEncrypt; mico_api.AesCbcDecrypt = _kernel_api.ssl_crypto_apis->AesCbcDecrypt; mico_api.wlan_get_mac_address = _kernel_api.wifi_apis->wlan_get_mac_address; mico_api.wlan_get_mac_address_by_interface = _kernel_api.wifi_apis->wlan_get_mac_address_by_interface; mico_api.mico_wlan_get_channel = _kernel_api.wifi_apis->mico_wlan_get_channel; mico_api.wlan_driver_version = _kernel_api.wifi_apis->wlan_driver_version; mico_api.micoWlanStart = _kernel_api.wifi_apis->micoWlanStart; mico_api.micoWlanStartAdv = _kernel_api.wifi_apis->micoWlanStartAdv; mico_api.micoWlanGetIPStatus = _kernel_api.wifi_apis->micoWlanGetIPStatus; mico_api.micoWlanGetLinkStatus = _kernel_api.wifi_apis->micoWlanGetLinkStatus; mico_api.micoWlanStartScan = (int(*)(void))_kernel_api.wifi_apis->micoWlanStartScan; mico_api.micoWlanStartScanAdv = (int(*)(void))_kernel_api.wifi_apis->micoWlanStartScanAdv; mico_api.micoWlanPowerOff = _kernel_api.wifi_apis->micoWlanPowerOff; mico_api.micoWlanPowerOn = _kernel_api.wifi_apis->micoWlanPowerOn; mico_api.micoWlanSuspend = _kernel_api.wifi_apis->micoWlanSuspend; mico_api.micoWlanSuspendStation = _kernel_api.wifi_apis->micoWlanSuspendStation; mico_api.micoWlanSuspendSoftAP = _kernel_api.wifi_apis->micoWlanSuspendSoftAP; mico_api.micoWlanStartEasyLink = _kernel_api.wifi_apis->micoWlanStartEasyLink; mico_api.micoWlanStartEasyLinkPlus = _kernel_api.wifi_apis->micoWlanStartEasyLink; mico_api.micoWlanStopEasyLink = _kernel_api.wifi_apis->micoWlanStopEasyLink; mico_api.micoWlanStopEasyLinkPlus = _kernel_api.wifi_apis->micoWlanStopEasyLink; mico_api.micoWlanStartWPS = NULL; mico_api.micoWlanStopWPS = NULL; mico_api.micoWlanStartAirkiss = _kernel_api.wifi_apis->micoWlanStartEasyLink; mico_api.micoWlanStopAirkiss = _kernel_api.wifi_apis->micoWlanStopEasyLink; mico_api.micoWlanEnablePowerSave = _kernel_api.wifi_apis->micoWlanEnablePowerSave; mico_api.micoWlanDisablePowerSave = _kernel_api.wifi_apis->micoWlanDisablePowerSave; mico_api.wifimgr_debug_enable = _kernel_api.wifi_apis->wifimgr_debug_enable; mico_api.mico_wlan_monitor_rx_type = _kernel_api.wifi_apis->mico_wlan_monitor_rx_type; mico_api.mico_wlan_start_monitor = _kernel_api.wifi_apis->mico_wlan_start_monitor; mico_api.mico_wlan_stop_monitor = _kernel_api.wifi_apis->mico_wlan_stop_monitor; mico_api.mico_wlan_set_channel = _kernel_api.wifi_apis->mico_wlan_set_channel; mico_api.mico_wlan_register_monitor_cb = _kernel_api.wifi_apis->mico_wlan_register_monitor_cb; mico_api.wlan_set_channel = _kernel_api.wifi_apis->wlan_set_channel; mico_api.mxchip_active_scan = _kernel_api.wifi_apis->mxchip_active_scan; mico_api.wifi_manage_custom_ie_add = _kernel_api.wifi_apis->wifi_manage_custom_ie_add; mico_api.wifi_manage_custom_ie_delete = _kernel_api.wifi_apis->wifi_manage_custom_ie_delete; mico_api.cli_init = _kernel_api.cli_apis->cli_init; mico_api.cli_register_command = _kernel_api.cli_apis->cli_register_command; mico_api.cli_unregister_command = _kernel_api.cli_apis->cli_unregister_command; mico_api.wifistate_Command = _kernel_api.cli_apis->wifistate_Command; mico_api.wifidebug_Command = _kernel_api.cli_apis->wifidebug_Command; mico_api.wifiscan_Command = _kernel_api.cli_apis->wifiscan_Command; mico_api.ifconfig_Command = _kernel_api.cli_apis->ifconfig_Command; mico_api.arp_Command = _kernel_api.cli_apis->arp_Command; mico_api.ping_Command = _kernel_api.cli_apis->ping_Command; mico_api.dns_Command = _kernel_api.cli_apis->dns_Command; mico_api.task_Command = _kernel_api.cli_apis->task_Command; mico_api.socket_show_Command = _kernel_api.cli_apis->socket_show_Command; mico_api.memory_show_Command = _kernel_api.cli_apis->memory_show_Command; mico_api.memory_dump_Command = _kernel_api.cli_apis->memory_dump_Command; mico_api.memory_set_Command = _kernel_api.cli_apis->memory_set_Command; mico_api.memp_dump_Command = _kernel_api.cli_apis->memp_dump_Command; mico_api.driver_state_Command = _kernel_api.cli_apis->driver_state_Command; mico_api.iperf_Command = _kernel_api.cli_apis->iperf_Command; mico_api.MicoFlashGetInfo = _kernel_api.flash_apis->MicoFlashGetInfo; mico_api.MicoFlashErase = _kernel_api.flash_apis->MicoFlashErase; mico_api.MicoFlashWrite = _kernel_api.flash_apis->MicoFlashWrite; mico_api.MicoFlashRead = _kernel_api.flash_apis->MicoFlashRead; mico_api.MicoFlashEnableSecurity = _kernel_api.flash_apis->MicoFlashEnableSecurity; mico_api.MicoGpioInitialize = _kernel_api.gpio_apis->MicoGpioInitialize; mico_api.MicoGpioFinalize = _kernel_api.gpio_apis->MicoGpioFinalize; mico_api.MicoGpioOutputHigh = _kernel_api.gpio_apis->MicoGpioOutputHigh; mico_api.MicoGpioOutputLow = _kernel_api.gpio_apis->MicoGpioOutputLow; mico_api.MicoGpioOutputTrigger = _kernel_api.gpio_apis->MicoGpioOutputTrigger; mico_api.MicoGpioInputGet = _kernel_api.gpio_apis->MicoGpioInputGet; mico_api.MicoGpioEnableIRQ = _kernel_api.gpio_apis->MicoGpioEnableIRQ; mico_api.MicoGpioDisableIRQ = _kernel_api.gpio_apis->MicoGpioDisableIRQ; mico_api.MicoUartInitialize = _kernel_api.uart_apis->MicoUartInitialize; mico_api.MicoUartFinalize = _kernel_api.uart_apis->MicoUartFinalize; mico_api.MicoUartSend = _kernel_api.uart_apis->MicoUartSend; mico_api.MicoUartRecv = _kernel_api.uart_apis->MicoUartRecv; mico_api.MicoUartGetLengthInBuffer = _kernel_api.uart_apis->MicoUartGetLengthInBuffer; mico_api.MicoUartPinRedirect = _kernel_api.uart_apis->MicoUartPinRedirect; mico_api.pm_mcu_state = _kernel_api.ps_apis->pm_mcu_state; mico_api.pm_wakeup_source = _kernel_api.ps_apis->pm_wakeup_source; mico_api.wifi_off_mcu_standby = (void(*)(int))(_kernel_api.ps_apis->wifi_off_mcu_standby); mico_api.MicoMcuPowerSaveConfig = _kernel_api.ps_apis->MicoMcuPowerSaveConfig; mico_api.debug_putchar = _kernel_api.os_apis->debug_putchar; mico_api.MicoSystemReboot = _kernel_api.os_apis->MicoSystemReboot; mico_api.get_ali_key = NULL; mico_api.get_ali_secret = NULL; mico_api.MicoRtcInitialize = _kernel_api.rtc_apis->MicoRtcInitialize; mico_api.MicoRtcGetTime = _kernel_api.rtc_apis->MicoRtcGetTime; mico_api.MicoRtcSetTime = _kernel_api.rtc_apis->MicoRtcSetTime; mico_api.localtime = _kernel_api.os_apis->localtime; mico_api.asctime = _kernel_api.os_apis->asctime; mico_api.wifi_set_country = _kernel_api.wifi_apis->wifi_set_country; mico_api.switch_active_firmrware = NULL; mico_api.last_reset_reason = _kernel_api.os_apis->last_reset_reason; mico_api.aon_write = _kernel_api.os_apis->aon_write; mico_api.aon_read = _kernel_api.os_apis->aon_read; mico_api.ssl_get_fd = _kernel_api.ssl_crypto_apis->ssl_get_fd; mico_api.get_random_sequence = _kernel_api.os_apis->get_random_sequence; mico_api.ssl_set_loggingcb = _kernel_api.ssl_crypto_apis->ssl_loggingcb; mico_api.wlan_inject_frame = _kernel_api.wifi_apis->wlan_inject_frame; mico_api.wlan_rx_mgmt_indication = NULL; mico_api.wlan_remain_on_channel = NULL; mico_api.wifi_bridge_mode_enable = NULL; mico_api.wifi_bridge_mode_disable = NULL; mico_api.send_easylink_minus = _kernel_api.wifi_apis->send_easylink_minus; mico_api.ssl_socket = (int(*)(void*))(_kernel_api.ssl_crypto_apis->ssl_get_fd); mico_api.i2c_apis = _kernel_api.i2c_apis; mico_api.spi_apis = _kernel_api.spi_apis; mico_api.pwm_apis = _kernel_api.pwm_apis; mico_api.wdg_apis = _kernel_api.wdg_apis; mico_api.adc_apis = _kernel_api.adc_apis; mico_api.gtimer_apis = _kernel_api.gtimer_apis; return &mico_api; } int debug_putchar(char *ch, int len) { return _kernel_api.os_apis->debug_putchar(ch, len); } int debug_gettchar(char *ch) { return _kernel_api.os_apis->debug_getchar(ch); } int mico_wlan_monitor_no_easylink(void) { return _kernel_api.wifi_apis->mico_wlan_monitor_no_easylink(); } int wlan_rx_mgnt_set(int enable, mgnt_handler_t cb) { return _kernel_api.wifi_apis->wlan_rx_mgnt_set(enable, cb); } void autoconfig_start(int seconds, int mode) { _kernel_api.wifi_apis->autoconfig_start(seconds, mode); } void wlan_set_softap_tdma(int value) { _kernel_api.wifi_apis->wlan_set_softap_tdma(value); } int wifi_off_fastly(void) { return _kernel_api.wifi_apis->wifi_off_fastly(); } int OpenEasylink_softap(int timeout, char *ssid, char*key, int channel) { return _kernel_api.wifi_apis->OpenEasylink_softap(timeout, ssid, key, channel); } void ssl_set_ecc(int enable) { _kernel_api.ssl_crypto_apis->ssl_set_ecc(enable); } /* return 1=success; 0=fail*/ int disable_log_uart(void) { return _kernel_api.uart_apis->disable_log_uart(); }