sint8 m2m_wifi_init(tstrWifiInitParam * param) { tstrM2mRev strtmp; sint8 ret = M2M_SUCCESS; uint8 u8WifiMode = M2M_WIFI_MODE_NORMAL; if(param == NULL) { ret = M2M_ERR_FAIL; goto _EXIT0; } gpfAppWifiCb = param->pfAppWifiCb; #ifdef ETH_MODE gpfAppEthCb = param->strEthInitParam.pfAppEthCb; gau8ethRcvBuf = param->strEthInitParam.au8ethRcvBuf; gu16ethRcvBufSize = param->strEthInitParam.u16ethRcvBufSize; u8WifiMode = param->strEthInitParam.u8EthernetEnable; #endif /* ETH_MODE */ #ifdef CONF_MGMT gpfAppMonCb = param->pfAppMonCb; #endif gu8scanInProgress = 0; /* Apply device specific initialization. */ ret = nm_drv_init(&u8WifiMode); if(ret != M2M_SUCCESS) goto _EXIT0; /* Initialize host interface module */ ret = hif_init(NULL); if(ret != M2M_SUCCESS) goto _EXIT1; hif_register_cb(M2M_REQ_GROUP_WIFI,m2m_wifi_cb); ret = nm_get_firmware_info(&strtmp); M2M_INFO("Firmware ver : %u.%u.%u\n", strtmp.u8FirmwareMajor, strtmp.u8FirmwareMinor, strtmp.u8FirmwarePatch); M2M_INFO("Min driver ver : %u.%u.%u\n", strtmp.u8DriverMajor, strtmp.u8DriverMinor, strtmp.u8DriverPatch); M2M_INFO("Curr driver ver: %u.%u.%u\n", M2M_DRIVER_VERSION_MAJOR_NO, M2M_DRIVER_VERSION_MINOR_NO, M2M_DRIVER_VERSION_PATCH_NO); if(M2M_ERR_FW_VER_MISMATCH == ret) { M2M_ERR("Mismatch Firmawre Version\n"); } goto _EXIT0; _EXIT1: nm_drv_deinit(NULL); _EXIT0: return ret; }
char* WiFiClass::firmwareVersion() { tstrM2mRev rev; if (!_init) { init(); } nm_get_firmware_info(&rev); memset(_version, 0, 9); if (rev.u8FirmwareMajor != rev.u8DriverMajor && rev.u8FirmwareMinor != rev.u8DriverMinor) { sprintf(_version, "-Err-"); } else { sprintf(_version, "%d.%d.%d", rev.u8FirmwareMajor, rev.u8FirmwareMinor, rev.u8FirmwarePatch); } return _version; }
/* * @fn nm_drv_init * @brief Initialize NMC1000 driver * @return M2M_SUCCESS in case of success and Negative error code in case of failure * @param [in] arg * Generic argument * @author M. Abdelmawla * @date 15 July 2012 * @version 1.0 */ sint8 nm_drv_init(void * arg) { tstrM2mRev strtmp; sint8 ret = M2M_SUCCESS; uint8 u8Mode = M2M_WIFI_MODE_NORMAL; if(NULL != arg) { if(M2M_WIFI_MODE_CONFIG == *((uint8 *)arg)) { u8Mode = M2M_WIFI_MODE_CONFIG; } else { /*continue running*/ } } else { /*continue running*/ } ret = nm_bus_iface_init(NULL); if (M2M_SUCCESS != ret) { M2M_ERR("[nmi start]: fail init bus\n"); goto ERR1; } #ifdef BUS_ONLY return; #endif #ifdef NO_HW_CHIP_EN ret = chip_wake(); nm_bsp_sleep(10); if (M2M_SUCCESS != ret) { M2M_ERR("[nmi start]: fail chip_wakeup\n"); goto ERR2; } /** Go... **/ ret = chip_reset(); if (M2M_SUCCESS != ret) { goto ERR2; } #endif M2M_INFO("Chip ID %lx\n", nmi_get_chipid()); #ifdef CONF_WINC_USE_SPI /* Must do this after global reset to set SPI data packet size. */ nm_spi_init(); #endif #ifdef NO_HW_CHIP_EN /*return power save to default value*/ chip_idle(); ret = cpu_start(); if (M2M_SUCCESS != ret) { goto ERR2; } #endif ret = wait_for_bootrom(u8Mode); if (M2M_SUCCESS != ret) { goto ERR2; } ret = wait_for_firmware_start(u8Mode); if (M2M_SUCCESS != ret) { goto ERR2; } if(M2M_WIFI_MODE_CONFIG == u8Mode) { goto ERR1; } else { /*continue running*/ } ret = enable_interrupts(); if (M2M_SUCCESS != ret) { M2M_ERR("failed to enable interrupts..\n"); goto ERR2; } ret = nm_get_firmware_info(&strtmp); M2M_INFO("Firmware ver : %u.%u.%u\n", strtmp.u8FirmwareMajor, strtmp.u8FirmwareMinor, strtmp.u8FirmwarePatch); M2M_INFO("Min driver ver : %u.%u.%u\n", strtmp.u8DriverMajor, strtmp.u8DriverMinor, strtmp.u8DriverPatch); M2M_INFO("Curr driver ver: %u.%u.%u\n", M2M_DRIVER_VERSION_MAJOR_NO, M2M_DRIVER_VERSION_MINOR_NO, M2M_DRIVER_VERSION_PATCH_NO); if(strtmp.u8FirmwareMajor != M2M_DRIVER_VERSION_MAJOR_NO || strtmp.u8FirmwareMinor != M2M_DRIVER_VERSION_MINOR_NO) { ret = M2M_ERR_FW_VER_MISMATCH; M2M_ERR("Firmware version mismatch!\n"); } return ret; ERR2: nm_bus_iface_deinit(); ERR1: return ret; }
sint8 m2m_wifi_get_firmware_version(tstrM2mRev *M2mRev) { return nm_get_firmware_info(M2mRev); }