Files
zTC1/mico-os/platform/MCU/MW3xx/moc/moc_api.c

805 lines
21 KiB
C

#include "common.h"
#include "moc_api.h"
extern const mico_api_t *lib_api_p;
extern platform_spi_driver_t platform_spi_drivers[];
extern platform_i2c_driver_t platform_i2c_drivers[];
/* WIFI MGR */
OSStatus StartNetwork(network_InitTypeDef_st* inNetworkInitPara)
{
return lib_api_p->micoWlanStart(inNetworkInitPara);
}
OSStatus StartAdvNetwork(network_InitTypeDef_adv_st* inNetworkInitParaAdv)
{
return lib_api_p->micoWlanStartAdv(inNetworkInitParaAdv);
}
OSStatus micoWlanStartEnt(network_Enterprise_st* inNetworkInitPara)
{
return lib_api_p->micoWlanStartEnt(inNetworkInitPara);
}
OSStatus getNetPara(IPStatusTypedef *outNetpara, WiFi_Interface inInterface)
{
return lib_api_p->micoWlanGetIPStatus(outNetpara, inInterface);
}
OSStatus CheckNetLink(LinkStatusTypeDef *outStatus)
{
return lib_api_p->micoWlanGetLinkStatus(outStatus);
}
void mxchipStartScan(void)
{
lib_api_p->micoWlanStartScan();
}
void mxchipStartAdvScan(void)
{
lib_api_p->micoWlanStartScanAdv();
}
OSStatus wifi_power_down(void)
{
return lib_api_p->micoWlanPowerOff();
}
OSStatus wifi_power_up(void)
{
return lib_api_p->micoWlanPowerOn();
}
OSStatus wlan_disconnect(void)
{
return lib_api_p->micoWlanSuspend();
}
OSStatus sta_disconnect(void)
{
return lib_api_p->micoWlanSuspendStation();
}
OSStatus uap_stop(void)
{
return lib_api_p->micoWlanSuspendSoftAP();
}
OSStatus OpenEasylink2_withdata(int inTimeout)
{
return lib_api_p->micoWlanStartEasyLink(inTimeout);
}
OSStatus OpenEasylink(int inTimeout)
{
return lib_api_p->micoWlanStartEasyLinkPlus(inTimeout);
}
OSStatus CloseEasylink2(void)
{
return lib_api_p->micoWlanStopEasyLink();
}
OSStatus CloseEasylink(void)
{
return lib_api_p->micoWlanStopEasyLinkPlus();
}
OSStatus OpenConfigmodeWPS(int inTimeout)
{
return lib_api_p->micoWlanStartWPS(inTimeout);
}
OSStatus CloseConfigmodeWPS(void)
{
return lib_api_p->micoWlanStopWPS();
}
OSStatus OpenAirkiss(int inTimeout)
{
return lib_api_p->micoWlanStartAirkiss(inTimeout);
}
OSStatus CloseAirkiss(void)
{
return lib_api_p->micoWlanStopAirkiss();
}
void ps_enable(void)
{
lib_api_p->micoWlanEnablePowerSave();
}
void ps_disable(void)
{
lib_api_p->micoWlanDisablePowerSave();
}
void wifimgr_debug_enable(bool enable)
{
lib_api_p->wifimgr_debug_enable(enable);
}
int mico_wlan_monitor_no_easylink(void)
{
return lib_api_p->mico_wlan_monitor_no_easylink();
}
int mico_wlan_monitor_rx_type(int type)
{
return lib_api_p->mico_wlan_monitor_rx_type(type);
}
int mico_wlan_start_monitor(void)
{
return lib_api_p->mico_wlan_start_monitor();
}
int mico_wlan_stop_monitor(void)
{
return lib_api_p->mico_wlan_stop_monitor();
}
int mico_wlan_set_channel(uint8_t channel)
{
return lib_api_p->mico_wlan_set_channel((int)channel);
}
void mico_wlan_register_monitor_cb(monitor_cb_t fn)
{
lib_api_p->mico_wlan_register_monitor_cb(fn);
}
int mxchip_active_scan(char*ssid, int is_adv)
{
return lib_api_p->mxchip_active_scan(ssid, is_adv);
}
void wlan_set_channel(int channel)
{
lib_api_p->wlan_set_channel(channel);
}
/* HAL: GPIO
{
return lib_api_p->;
} FLASH
{
return lib_api_p->;
} UART */
mico_logic_partition_t* MicoFlashGetInfo( mico_partition_t inPartition )
{
return lib_api_p->MicoFlashGetInfo(inPartition);
}
OSStatus MicoFlashErase(mico_partition_t inPartition, uint32_t off_set, uint32_t size)
{
return lib_api_p->MicoFlashErase(inPartition, off_set, size);
}
OSStatus MicoFlashWrite( mico_partition_t inPartition, volatile uint32_t* off_set, uint8_t* inBuffer ,uint32_t inBufferLength)
{
lib_api_p->MicoFlashWrite(inPartition, off_set, inBuffer, inBufferLength);
return 0;
}
OSStatus MicoFlashRead( mico_partition_t inPartition, volatile uint32_t* off_set, uint8_t* outBuffer, uint32_t inBufferLength)
{
return lib_api_p->MicoFlashRead(inPartition, off_set, outBuffer, inBufferLength);
}
OSStatus MicoFlashEnableSecurity( mico_partition_t partition, uint32_t off_set, uint32_t size )
{
return lib_api_p->MicoFlashEnableSecurity(partition, off_set, size );
}
OSStatus MicoGpioInitialize( mico_gpio_t gpio, mico_gpio_config_t configuration )
{
return lib_api_p->MicoGpioInitialize(gpio, configuration );
}
OSStatus MicoGpioFinalize( mico_gpio_t gpio )
{
return lib_api_p->MicoGpioFinalize(gpio);
}
OSStatus MicoGpioOutputHigh( mico_gpio_t gpio )
{
return lib_api_p->MicoGpioOutputHigh(gpio);
}
OSStatus MicoGpioOutputLow( mico_gpio_t gpio )
{
return lib_api_p->MicoGpioOutputLow(gpio);
}
OSStatus MicoGpioOutputTrigger( mico_gpio_t gpio )
{
return lib_api_p->MicoGpioOutputTrigger(gpio);
}
bool MicoGpioInputGet( mico_gpio_t gpio )
{
return lib_api_p->MicoGpioInputGet(gpio);
}
OSStatus MicoGpioEnableIRQ( mico_gpio_t gpio, mico_gpio_irq_trigger_t trigger, mico_gpio_irq_handler_t handler, void* arg )
{
return lib_api_p->MicoGpioEnableIRQ(gpio, trigger, handler, arg );
}
OSStatus MicoGpioDisableIRQ( mico_gpio_t gpio )
{
return lib_api_p->MicoGpioDisableIRQ(gpio);
}
OSStatus MicoUartInitialize( mico_uart_t uart, const mico_uart_config_t* config, ring_buffer_t* optional_rx_buffer )
{
return lib_api_p->MicoUartInitialize(uart, config, optional_rx_buffer );
}
OSStatus MicoUartFinalize( mico_uart_t uart )
{
return lib_api_p->MicoUartFinalize(uart);
}
OSStatus MicoUartSend( mico_uart_t uart, const void* data, uint32_t size )
{
return lib_api_p->MicoUartSend(uart, data, size );
}
OSStatus MicoUartRecv( mico_uart_t uart, void* data, uint32_t size, uint32_t timeout )
{
return lib_api_p->MicoUartRecv(uart, data, size, timeout );
}
uint32_t MicoUartGetLengthInBuffer( mico_uart_t uart )
{
return lib_api_p->MicoUartGetLengthInBuffer(uart);
}
OSStatus MicoUartPinRedirect( mico_uart_t uart )
{
lib_api_p->MicoUartPinRedirect(uart);
return kNoErr;
}
void wifistate_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->wifistate_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void wifidebug_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->wifidebug_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void wifiscan_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->wifiscan_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void ifconfig_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->ifconfig_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void arp_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->arp_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void ping_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->ping_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void dns_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->dns_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void task_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->task_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void socket_show_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->socket_show_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void memory_show_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->memory_show_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void memory_dump_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->memory_dump_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void memory_set_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->memory_set_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void memp_dump_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->memp_dump_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
void driver_state_Command(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv)
{
lib_api_p->driver_state_Command(pcWriteBuffer, xWriteBufferLen, argc, argv);
}
int wlan_driver_version( char* outVersion, uint8_t inLength )
{
return lib_api_p->wlan_driver_version(outVersion, inLength);
}
void mico_wlan_get_mac_address( uint8_t *mac )
{
lib_api_p->wlan_get_mac_address(mac);
}
void InitMd5(md5_context*md5)
{
lib_api_p->InitMd5(md5);
}
void Md5Update(md5_context* md5, unsigned char *input, int ilen)
{
lib_api_p->Md5Update(md5, input, ilen);
}
void Md5Final(md5_context* md5, uint8_t* hash)
{
lib_api_p->Md5Final(md5, hash);
}
int Md5Hash(const uint8_t* data, uint32_t len, uint8_t* hash)
{
return lib_api_p->Md5Hash(data, len, hash);
}
void AesEncryptDirect(Aes* aes, uint8_t* out, const uint8_t* in)
{
lib_api_p->AesEncryptDirect(aes, out, in);
}
void AesDecryptDirect(Aes* aes, uint8_t* out, const uint8_t* in)
{
lib_api_p->AesDecryptDirect(aes, out, in);
}
//int AesSetKeyDirect(Aes* aes, const byte* key, word32 ilen,const byte* out, int dir);
int AesSetKeyDirect(Aes* aes, const unsigned char* key, unsigned int len, const unsigned char* iv, int dir)
{
return lib_api_p->AesSetKeyDirect(aes, key, len, iv, dir);
}
int aes_encrypt(int sz, const char * key, const char * in, char * out)
{
return lib_api_p->aes_encrypt(sz, key, in, out);
}
int aes_decrypt(int sz, const char * key, const char * in, char * out)
{
return lib_api_p->aes_decrypt(sz, key, in, out);
}
int AesSetKey(Aes* aes, const uint8_t* key, unsigned int len,
const uint8_t* iv, int dir)
{
return lib_api_p->AesSetKey(aes, key, len, iv, dir);
}
int AesSetIV(Aes* aes, const uint8_t* iv)
{
return lib_api_p->AesSetIV(aes, iv);
}
int AesCbcEncrypt(Aes* aes, uint8_t* out,
const uint8_t* in, unsigned int sz)
{
return lib_api_p->AesCbcEncrypt(aes, out, in, sz);
}
int AesCbcDecrypt(Aes* aes, uint8_t* out,
const uint8_t* in, unsigned int sz){
return lib_api_p->AesCbcDecrypt(aes, out, in, sz);
}
OSStatus mxchipInit(void)
{
lib_api_p->mxchipInit();
return kNoErr;
}
micoMemInfo_t* mico_memory_info(void)
{
return lib_api_p->mico_memory_info();
}
char* system_lib_version(void)
{
return lib_api_p->library_version;
}
void MicoSystemReboot(void)
{
lib_api_p->MicoSystemReboot();
}
char *mico_get_bootloader_ver(void)
{
return "bootloader";
}
void MicoSystemStandBy( uint32_t secondsToWakeup )
{
lib_api_p->wifi_off_mcu_standby(secondsToWakeup);
}
char *get_ali_key(void)
{
return lib_api_p->get_ali_key();
}
char *get_ali_secret(void)
{
return lib_api_p->get_ali_secret();
}
void MicoRtcInitialize(void)
{
lib_api_p->MicoRtcInitialize();
}
OSStatus MicoRtcGetTime(mico_rtc_time_t* time)
{
int ret = lib_api_p->MicoRtcGetTime(time);
time->month += 1;
time->year -= 100;
return ret;
}
OSStatus MicoRtcSetTime(mico_rtc_time_t* time)
{
time->month -= 1;
time->year += 100;
return lib_api_p->MicoRtcSetTime(time);
}
#if defined ( __ICCARM__ )
struct tm *localtime(const time_t * time)
{
return lib_api_p->localtime(time);
}
#endif
char *asctime(const struct tm *tm)
{
return lib_api_p->asctime(tm);
}
int wifi_set_country(int country)
{
return lib_api_p->wifi_set_country(country);
}
int switch_active_firmware(void)
{
return lib_api_p->switch_active_firmrware();
}
int get_last_reset_reason(void)
{
return lib_api_p->last_reset_reason();
}
void system_config_set(mico_system_config_t *cfg)
{
lib_api_p->system_config_set(cfg);
}
mico_system_config_t *system_config_get(void)
{
return lib_api_p->system_config_get();
}
int aon_write( uint32_t offset, uint8_t* in ,uint32_t len)
{
return lib_api_p->aon_write(offset, in, len);
}
int aon_read( uint32_t offset, uint8_t* out, uint32_t len)
{
return lib_api_p->aon_read(offset, out, len);
}
int lwip_ioctl(int s, long cmd, void *argp)
{
return lib_api_p->lwip_apis->lwip_ioctl(s, cmd, argp);
}
int lwip_fcntl(int s, int cmd, int val)
{
return lib_api_p->lwip_apis->lwip_fcntl(s, cmd, val);
}
void lwip_freeaddrinfo(struct addrinfo *ai)
{
lib_api_p->lwip_apis->lwip_freeaddrinfo(ai);
}
int lwip_getaddrinfo(const char *nodename,
const char *servname,
const struct addrinfo *hints,
struct addrinfo **res)
{
return lib_api_p->lwip_apis->lwip_getaddrinfo(nodename,
servname, hints, res);
}
char * ipaddr_ntoa(const ip_addr_t *addr)
{
return lib_api_p->lwip_apis->ipaddr_ntoa(addr);
}
uint32_t ipaddr_addr(const char *cp)
{
return lib_api_p->lwip_apis->ipaddr_addr(cp);
}
uint16_t
lwip_htons(uint16_t n)
{
return ((n & 0xff) << 8) | ((n & 0xff00) >> 8);
}
/**
* Convert an uint16_t from network- to host byte order.
*
* @param n uint16_t in network byte order
* @return n in host byte order
*/
uint16_t
lwip_ntohs(uint16_t n)
{
return lwip_htons(n);
}
/**
* Convert an uint32_t from host- to network byte order.
*
* @param n uint32_t in host byte order
* @return n in network byte order
*/
uint32_t
lwip_htonl(uint32_t n)
{
return ((n & 0xff) << 24) |
((n & 0xff00) << 8) |
((n & 0xff0000UL) >> 8) |
((n & 0xff000000UL) >> 24);
}
/**
* Convert an uint32_t from network- to host byte order.
*
* @param n uint32_t in network byte order
* @return n in host byte order
*/
uint32_t
lwip_ntohl(uint32_t n)
{
return lwip_htonl(n);
}
OSStatus MicoPwmInitialize(mico_pwm_t pwm, uint32_t freequency, float duty_cycle)
{
return lib_api_p->pwm_apis->pwm_init(pwm, freequency, duty_cycle);
}
OSStatus MicoPwmStart(mico_pwm_t pwm)
{
return lib_api_p->pwm_apis->pwm_start(pwm);
}
OSStatus MicoPwmStop(mico_pwm_t pwm)
{
return lib_api_p->pwm_apis->pwm_stop(pwm);
}
OSStatus MicoWdgInitialize( uint32_t timeout )
{
return lib_api_p->wdg_apis->wdg_init(timeout);
}
void MicoWdgReload( void )
{
lib_api_p->wdg_apis->wdg_reload();
}
OSStatus MicoWdgFinalize( void )
{
return lib_api_p->wdg_apis->wdg_stop();
}
int Cyassl_get_fd(const void *ssl)
{
return lib_api_p->ssl_get_fd(ssl);
}
OSStatus MicoAdcInitialize( mico_adc_t adc, uint32_t sampling_cycle )
{
return lib_api_p->adc_apis->MicoAdcInitialize(adc, sampling_cycle);
}
OSStatus MicoAdcFinalize( mico_adc_t adc )
{
return lib_api_p->adc_apis->MicoAdcFinalize(adc);
}
OSStatus MicoAdcTakeSample( mico_adc_t adc, uint16_t* output )
{
return lib_api_p->adc_apis->MicoAdcTakeSample(adc, output);
}
OSStatus MicoAdcTakeSampleStreram( mico_adc_t adc, void* buffer, uint16_t buffer_length )
{
return lib_api_p->adc_apis->MicoAdcTakeSampleStreram(adc, buffer, buffer_length);
}
OSStatus MicoI2cInitialize( mico_i2c_device_t* device )
{
OSStatus result;
if( platform_i2c_drivers[device->port].i2c_mutex == NULL)
mico_rtos_init_mutex( &platform_i2c_drivers[device->port].i2c_mutex );
mico_rtos_lock_mutex( &platform_i2c_drivers[device->port].i2c_mutex );
result = lib_api_p->i2c_apis->i2c_init(device);
mico_rtos_unlock_mutex( &platform_i2c_drivers[device->port].i2c_mutex );
return result;
}
OSStatus MicoI2cFinalize( mico_i2c_device_t* device )
{
if( platform_i2c_drivers[device->port].i2c_mutex != NULL){
mico_rtos_deinit_mutex( &platform_i2c_drivers[device->port].i2c_mutex );
platform_i2c_drivers[device->port].i2c_mutex = NULL;
}
return lib_api_p->i2c_apis->i2c_deinit(device);
}
bool MicoI2cProbeDevice( mico_i2c_device_t* device, int retries )
{
bool ret;
mico_rtos_lock_mutex( &platform_i2c_drivers[device->port].i2c_mutex );
ret = lib_api_p->i2c_apis->i2c_probe_device(device, retries);
mico_rtos_unlock_mutex( &platform_i2c_drivers[device->port].i2c_mutex );
return ret;
}
OSStatus MicoI2cBuildTxMessage( mico_i2c_message_t* message, const void* tx_buffer, uint16_t tx_buffer_length, uint16_t retries )
{
return lib_api_p->i2c_apis->i2c_build_tx_msg(message, tx_buffer, tx_buffer_length, retries );
}
OSStatus MicoI2cBuildRxMessage( mico_i2c_message_t* message, void* rx_buffer, uint16_t rx_buffer_length, uint16_t retries )
{
return lib_api_p->i2c_apis->i2c_build_rx_msg(message, rx_buffer, rx_buffer_length, retries );
}
OSStatus MicoI2cBuildCombinedMessage( mico_i2c_message_t* message, const void* tx_buffer, void* rx_buffer, uint16_t tx_buffer_length, uint16_t rx_buffer_length, uint16_t retries )
{
return lib_api_p->i2c_apis->i2c_build_combined_msg(message, tx_buffer, rx_buffer,
tx_buffer_length, rx_buffer_length, retries );
}
OSStatus MicoI2cTransfer( mico_i2c_device_t* device, mico_i2c_message_t* messages, uint16_t number_of_messages )
{
OSStatus err = kNoErr;
mico_rtos_lock_mutex( &platform_i2c_drivers[device->port].i2c_mutex );
err = lib_api_p->i2c_apis->i2c_transfer(device, messages, number_of_messages);
mico_rtos_unlock_mutex( &platform_i2c_drivers[device->port].i2c_mutex );
return err;
}
OSStatus MicoSpiInitialize( const mico_spi_device_t* spi )
{
if ( platform_spi_drivers[spi->port].initialized == MICO_TRUE )
return kNoErr;
lib_api_p->spi_apis->spi_init(spi);
platform_spi_drivers[spi->port].initialized = MICO_TRUE;
return kNoErr;
}
OSStatus MicoSpiFinalize( const mico_spi_device_t* spi )
{
platform_spi_drivers[spi->port].initialized = MICO_FALSE;
return lib_api_p->spi_apis->spi_finalize(spi);
}
OSStatus MicoSpiTransfer( const mico_spi_device_t* spi, const mico_spi_message_segment_t* segments, uint16_t number_of_segments )
{
return lib_api_p->spi_apis->spi_transfer(spi, segments, number_of_segments );
}
OSStatus MicoRandomNumberRead( void *inBuffer, int inByteCount )
{
lib_api_p->get_random_sequence(inBuffer, inByteCount);
return kNoErr;
}
uint32_t RNG_GetRandomNumber(void)
{
uint32_t d;
MicoRandomNumberRead((unsigned char*)&d, 4);
return d;
}
int wlan_inject_frame(const uint8_t *buff, size_t len)
{
return lib_api_p->wlan_inject_frame(buff, len);
}
OSStatus mico_wlan_send_mgnt(uint8_t *buffer, uint32_t length)
{
// I don't know the return value;
lib_api_p->wlan_inject_frame(buffer, length);
return kNoErr;
}
void MicoMcuPowerSaveConfig(int enable)
{
}
/**
* This API can be used to start/stop the management frame forwards
* to host through datapath.
*
* \param[in] bss_type The interface from which management frame needs to be
* collected.
* \param[in] mgmt_subtype_mask Management Subtype Mask
* If Bit X is set in mask, it means that IEEE Management Frame
* SubTyoe X is to be filtered and passed through to host.
* Bit Description
* [31:14] Reserved
* [13] Action frame
* [12:9] Reserved
* [8] Beacon
* [7:6] Reserved
* [5] Probe response
* [4] Probe request
* [3] Reassociation response
* [2] Reassociation request
* [1] Association response
* [0] Association request
* Support multiple bits set.
* 0 = stop forward frame
* 1 = start forward frame
*
*\param[in] rx_mgmt_callback The receive callback where the received management
* frames are passed.
* \return WM_SUCCESS if operation is successful.
* \return -WM_FAIL if command fails.
*
* \note Pass Management Subtype Mask all zero to disable all the management
* frame forward to host.
*/
int wlan_rx_mgmt_indication(const enum wlan_bss_type bss_type,
const uint32_t mgmt_subtype_mask,
void (*rx_mgmt_callback)(const enum wlan_bss_type
bss_type, const uint8_t *frame,
const uint16_t len))
{
return lib_api_p->wlan_rx_mgmt_indication(
bss_type, mgmt_subtype_mask, rx_mgmt_callback);
}
int wlan_remain_on_channel(const bool status, const uint8_t channel,
const uint32_t ms)
{
return lib_api_p->wlan_remain_on_channel(status, channel, ms);
}
int wifi_bridge_mode_enable(bool hidden_ssid)
{
return lib_api_p->wifi_bridge_mode_enable(hidden_ssid);
}
int wifi_bridge_mode_disable(void)
{
return lib_api_p->wifi_bridge_mode_disable();
}
int send_easylink_minus(uint32_t ip, char *ssid, char *key)
{
return lib_api_p->send_easylink_minus(ip, ssid, key);
}
OSStatus MicoIISInitialize( const mico_iis_device_t* iis )
{
return lib_api_p->iis_apis->iis_init(iis);
}
OSStatus MicoIISFinalize( const mico_iis_device_t* iis )
{
return lib_api_p->iis_apis->iis_finalize(iis);
}
OSStatus MicoIISTransfer( const mico_iis_device_t* iis, const mico_iis_message_segment_t* segments, uint16_t number_of_segments )
{
return lib_api_p->iis_apis->iis_transfer(iis,segments,number_of_segments);
}
OSStatus MicoIISWrite( const mico_iis_device_t* iis, uint8_t *p_buf, uint32_t size )
{
return lib_api_p->iis_apis->iis_write(iis, p_buf, size);
}
OSStatus MicoIISRead( const mico_iis_device_t* iis, uint8_t *p_buf, uint32_t size )
{
return lib_api_p->iis_apis->iis_read(iis, p_buf, size);
}
OSStatus mico_wlan_get_channel( uint8_t *channel )
{
*channel = lib_api_p->mico_wlan_get_channel();
return kNoErr;
}