| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493 |
- /*****************************************************************************
- *
- * File Name : wm_param.c
- *
- * Description: param manager Module
- *
- * Copyright (c) 2014 Winner Micro Electronic Design Co., Ltd.
- * All rights reserved.
- *
- * Author : dave
- *
- * Date : 2014-6-12
- *****************************************************************************/
- #include <string.h>
- #include "wm_debug.h"
- #include "wm_efuse.h"
- #include "wm_flash.h"
- #include "wm_internal_flash.h"
- #include "wm_params.h"
- #include "wm_param.h"
- #include "wm_mem.h"
- #include "utils.h"
- #include "wm_flash_map.h"
- #define USE_TWO_RAM_FOR_PARAMETER 0
- static struct tls_param_flash flash_param;
- #if USE_TWO_RAM_FOR_PARAMETER
- static struct tls_sys_param sram_param;
- #endif
- struct tls_sys_param *user_default_param = NULL;
- struct tls_sys_param * tls_param_user_param_init(void);
- static tls_os_sem_t *sys_param_lock = NULL;
- static const u8 factory_default_hardware[8] = {'H', 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
- u8 updp_mode;//upadate default parameters mode, 0:not updating or up finish; 1:updating
- static int param_flash_verify(u32 data_addr, u8 *data_buffer, u32 len)
- {
- int err;
- u8 *buffer;
- buffer = tls_mem_alloc(len);
- if (buffer == NULL) {return 0;}
- do {
- err = tls_fls_read(data_addr, buffer, len);
- if (err != TLS_FLS_STATUS_OK) {
- err = 0;
- break;
- }
- if (memcmp(buffer, data_buffer, len) == 0) {
- err = 1;
- } else {
- err = 0;
- }
- } while (0);
- tls_mem_free(buffer);
- return err;
- }
- static int param_to_flash(int id, int modify_count, int partition_num)
- {
- int err;
- #if USE_TWO_RAM_FOR_PARAMETER
- struct tls_sys_param *src;
- struct tls_sys_param *dest;
- #endif
- if ((id < TLS_PARAM_ID_ALL) || (id >= TLS_PARAM_ID_MAX)) {return TLS_PARAM_STATUS_EINVALID;}
- err = TLS_PARAM_STATUS_OK;
- #if USE_TWO_RAM_FOR_PARAMETER
- src = &sram_param;
- dest = &flash_param.parameters;
- switch (id) {
- case TLS_PARAM_ID_ALL:
- MEMCPY(dest, src, sizeof(struct tls_sys_param));
- break;
- case TLS_PARAM_ID_SSID:
- MEMCPY(&dest->ssid, &src->ssid, sizeof(struct tls_param_ssid));
- break;
- case TLS_PARAM_ID_ENCRY:
- dest->encry = src->encry;
- break;
- case TLS_PARAM_ID_KEY:
- MEMCPY(&dest->key, &src->key, sizeof(struct tls_param_key));
- break;
- case TLS_PARAM_ID_IP:
- MEMCPY(&dest->ipcfg, &src->ipcfg, sizeof(struct tls_param_ip));
- break;
- case TLS_PARAM_ID_AUTOMODE:
- dest->auto_mode = src->auto_mode;
- break;
- case TLS_PARAM_ID_DEFSOCKET:
- MEMCPY(&dest->remote_socket_cfg, &src->remote_socket_cfg, sizeof(struct tls_param_socket));
- break;
- case TLS_PARAM_ID_BSSID:
- MEMCPY(&dest->bssid, &src->bssid, sizeof(struct tls_param_bssid));
- break;
- case TLS_PARAM_ID_CHANNEL:
- dest->channel = src->channel;
- break;
- case TLS_PARAM_ID_CHANNEL_EN:
- dest->channel_enable = src->channel_enable;
- break;
- case TLS_PARAM_ID_COUNTRY_REGION:
- dest->wireless_region = src->wireless_region;
- break;
- case TLS_PARAM_ID_WPROTOCOL:
- dest->wireless_protocol = src->wireless_protocol;
- break;
- case TLS_PARAM_ID_ADHOC_AUTOCREATE:
- dest->auto_create_adhoc = src->auto_create_adhoc;
- break;
- case TLS_PARAM_ID_ROAMING:
- dest->auto_roam = src->auto_roam;
- break;
- case TLS_PARAM_ID_AUTO_RETRY_CNT:
- dest->auto_retrycnt = src->auto_retrycnt;
- break;
- case TLS_PARAM_ID_WBGR:
- MEMCPY(&dest->wbgr, &src->wbgr, sizeof(struct tls_param_bgr));
- break;
- case TLS_PARAM_ID_USRINTF:
- dest->user_port_mode = src->user_port_mode;
- break;
- case TLS_PARAM_ID_ESCAPE_CHAR:
- dest->EscapeChar = src->EscapeChar;
- break;
- case TLS_PARAM_ID_ESCAPE_PERIOD:
- dest->EscapePeriod = src->EscapePeriod;
- break;
- case TLS_PARAM_ID_AUTO_TRIGGER_LENGTH:
- dest->transparent_trigger_length = src->transparent_trigger_length;
- break;
- case TLS_PARAM_ID_AUTO_TRIGGER_PERIOD:
- dest->transparent_trigger_period = src->transparent_trigger_period;
- break;
- case TLS_PARAM_ID_DEBUG_MODE:
- dest->debug_mode = src->debug_mode;
- break;
- case TLS_PARAM_ID_HARDVERSION:
- MEMCPY(&dest->hardware_version, &src->hardware_version, sizeof(struct tls_param_hardware_version));
- break;
- case TLS_PARAM_ID_BRDSSID:
- dest->ssid_broadcast_enable = src->ssid_broadcast_enable;
- break;
- case TLS_PARAM_ID_DNSNAME:
- MEMCPY(dest->local_dnsname, src->local_dnsname, 32);
- break;
- case TLS_PARAM_ID_DEVNAME:
- MEMCPY(dest->local_device_name, src->local_device_name, 32);
- break;
- case TLS_PARAM_ID_PSM:
- dest->auto_powersave = src->auto_powersave;
- break;
- case TLS_PARAM_ID_ORAY_CLIENT:
- MEMCPY(&dest->oray_client_setting, &src->oray_client_setting, sizeof(struct tls_param_oray_client));
- break;
- case TLS_PARAM_ID_UPNP:
- dest->upnp_enable = src->upnp_enable;
- break;
- case TLS_PARAM_ID_UART:
- MEMCPY(&dest->uart_cfg, &src->uart_cfg, sizeof(struct tls_param_uart));
- break;
- #if TLS_CONFIG_WPS
- case TLS_PARAM_ID_WPS:
- MEMCPY(&dest->wps, &src->wps, sizeof(struct tls_param_wps));
- break;
- #endif
- case TLS_PARAM_ID_CHANNEL_LIST:
- dest->channellist = src->channellist;
- break;
- case TLS_PARAM_ID_ONESHOT_CFG:
- dest->oneshotflag = src->oneshotflag;
- break;
- case TLS_PARAM_ID_SHA1:
- MEMCPY(&dest->psk, &src->psk, sizeof(struct tls_param_sha1));
- break;
- case TLS_PARAM_ID_ORIGIN_KEY:
- MEMCPY(&dest->original_key, &src->original_key, sizeof(struct tls_param_original_key));
- break;
- case TLS_PARAM_ID_ORIGIN_SSID:
- MEMCPY(&dest->original_ssid, &src->original_ssid, sizeof(struct tls_param_ssid));
- break;
- case TLS_PARAM_ID_AUTO_RECONNECT:
- dest->auto_reconnect = src->auto_reconnect;
- break;
- case TLS_PARAM_ID_IO_MODE:
- dest->IoMode = src->IoMode;
- break;
- case TLS_PARAM_ID_CMD_MODE:
- dest->CmdMode = src->CmdMode;
- break;
- case TLS_PARAM_ID_PASSWORD:
- MEMCPY(dest->PassWord, src->PassWord, sizeof(src->PassWord));
- break;
- case TLS_PARAM_ID_WEBS_CONFIG:
- dest->WebsCfg = src->WebsCfg;
- break;
- case TLS_PARAM_ID_QUICK_CONNECT:
- MEMCPY(&dest->quick_connect, &src->quick_connect, sizeof(struct tls_param_quick_connect));
- break;
- case TLS_PARAM_ID_KEY_CHANGE:
- dest->key_changed = src->key_changed;
- break;
- case TLS_PARAM_ID_SSID_CHANGE:
- dest->ssid_changed = src->ssid_changed;
- break;
- #if TLS_CONFIG_AP
- case TLS_PARAM_ID_SOFTAP_SSID:
- MEMCPY(&dest->apsta_ssid, &src->apsta_ssid, sizeof(struct tls_param_ssid));
- break;
- case TLS_PARAM_ID_SOFTAP_PSK:
- MEMCPY(&dest->apsta_psk, &src->apsta_psk, sizeof(struct tls_param_sha1));
- break;
- case TLS_PARAM_ID_SOFTAP_ENCRY:
- dest->encry4softap = src->encry4softap;
- break;
- case TLS_PARAM_ID_SOFTAP_KEY:
- MEMCPY(&dest->key4softap, &src->key4softap, sizeof(struct tls_param_key));
- break;
- case TLS_PARAM_ID_SOFTAP_IP:
- MEMCPY(&dest->ipcfg4softap, &src->ipcfg4softap, sizeof(struct tls_param_ip));
- break;
- case TLS_PARAM_ID_SOFTAP_CHANNEL:
- dest->channel4softap = src->channel4softap;
- break;
- case TLS_PARAM_ID_SOFTAP_WBGR:
- MEMCPY(&dest->wbgr4softap, &src->wbgr4softap, sizeof(struct tls_param_bgr));
- break;
- #endif
- case TLS_PARAM_ID_SNTP_SERVER1:
- strncpy(dest->sntp_service1, src->sntp_service1, strlen(src->sntp_service1)+1);
- break;
- case TLS_PARAM_ID_SNTP_SERVER2:
- strncpy(dest->sntp_service2, src->sntp_service2, strlen(src->sntp_service2)+1);
- break;
- case TLS_PARAM_ID_SNTP_SERVER3:
- strncpy(dest->sntp_service3, src->sntp_service3, strlen(src->sntp_service3)+1);
- break;
- case TLS_PARAM_ID_TEM_OFFSET:
- MEMCPY(&dest->params_tem, &src->params_tem, sizeof(struct tls_param_tem_offset));
- break;
-
- case TLS_PARAM_ID_BT_ADAPTER:
- MEMCPY(&dest->adapter_t, &src->adapter_t, sizeof(bt_adapter_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_1:
- MEMCPY(&dest->remote_device1, &src->remote_device1, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_2:
- MEMCPY(&dest->remote_device2, &src->remote_device2, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_3:
- MEMCPY(&dest->remote_device3, &src->remote_device3, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_4:
- MEMCPY(&dest->remote_device4, &src->remote_device4, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_5:
- MEMCPY(&dest->remote_device5, &src->remote_device5, sizeof(bt_remote_device_t));
- break;
- #if 0
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_6:
- MEMCPY(&dest->remote_device6, &src->remote_device6, sizeof(bt_remote_device_t));
- break;
-
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_7:
- MEMCPY(&dest->remote_device7, &src->remote_device7, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_8:
- MEMCPY(&dest->remote_device8, &src->remote_device8, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_9:
- MEMCPY(&dest->remote_device9, &src->remote_device9, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_10:
- MEMCPY(&dest->remote_device10, &src->remote_device10, sizeof(bt_remote_device_t));
- break;
- #endif
- default:
- err = TLS_PARAM_STATUS_EINVALIDID;
- goto exit;
- }
- #endif
- flash_param.magic = TLS_PARAM_MAGIC;
- flash_param.length = sizeof(flash_param);
- if (modify_count < 0){
- flash_param.modify_count ++;
- TLS_DBGPRT_INFO("update the \"modify count(%d)\".\n", flash_param.modify_count);
- } else {
- flash_param.modify_count = modify_count;
- TLS_DBGPRT_INFO("initialize the \"modify count(%d)\".\n", flash_param.modify_count);
- }
- if (partition_num < 0) {
- flash_param.partition_num = (flash_param.partition_num + 1) & 0x01;
- TLS_DBGPRT_INFO("switch the parameter patition number(%d).\n", flash_param.partition_num);
- } else {
- flash_param.partition_num = partition_num;
- TLS_DBGPRT_INFO("initialize the parameter patition number(%d).\n", flash_param.partition_num);
- }
- flash_param.resv_1 = flash_param.resv_2 = 0;
- flash_param.crc32 = get_crc32((u8 *)&flash_param, sizeof(flash_param) - 4);
- TLS_DBGPRT_INFO("update the parameters to parameter patition(%d) in spi flash.\n", flash_param.partition_num);
- err = tls_fls_write((flash_param.partition_num == 0) ? TLS_FLASH_PARAM1_ADDR : TLS_FLASH_PARAM2_ADDR,
- (u8 *)&flash_param, sizeof(flash_param));
- if (err != TLS_FLS_STATUS_OK) {
- TLS_DBGPRT_ERR("write to spi flash fail(%d)!\n", err);
- err = TLS_PARAM_STATUS_EIO;
- goto exit;
- }
- if (param_flash_verify((flash_param.partition_num == 0) ? TLS_FLASH_PARAM1_ADDR : TLS_FLASH_PARAM2_ADDR,
- (u8 *)&flash_param, sizeof(flash_param)) == 1) {err = TLS_PARAM_STATUS_OK;}
- else {
- TLS_DBGPRT_ERR("verify the parameters in spi flash fail(%d)!\n", err);
- err = TLS_PARAM_STATUS_EIO;
- }
- exit:
- return err;
- }
- /**********************************************************************************************************
- * Description: This function is used to initial system param.
- *
- * Arguments : sys_param is the system param addr
- *
- * Returns : TLS_PARAM_STATUS_OK init success
- * TLS_PARAM_STATUS_EMEM memory error
- * TLS_PARAM_STATUS_EIO io error
- * TLS_PARAM_STATUS_EPERM
- **********************************************************************************************************/
- int tls_param_init(void)
- {
- bool is_damage[TLS_PARAM_PARTITION_NUM];
- u8 damaged;
- int err;
- signed short i;
- u16 tryrestore = 0;
- struct tls_param_flash *flash;
- if(flash_param.magic == TLS_PARAM_MAGIC)
- {
- TLS_DBGPRT_ERR("parameter management module has been initialized!\n");
- return TLS_PARAM_STATUS_EPERM;
- }
- err = tls_os_sem_create(&sys_param_lock, 1);
- if (err != TLS_OS_SUCCESS)
- {
- TLS_DBGPRT_ERR("create semaphore @sys_param_lock fail!\n");
- return TLS_PARAM_STATUS_EMEM;
- }
- tls_os_sem_acquire(sys_param_lock, 0);
- err = TLS_PARAM_STATUS_OK;
- i = 0;
- damaged= 0;
- is_damage[0] = is_damage[1] = FALSE;
- flash = NULL;
- memset(&flash_param, 0, sizeof(flash_param));
- #if USE_TWO_RAM_FOR_PARAMETER
- memset(&sram_param, 0, sizeof(sram_param));
- #endif
- tryrestore = 0;
- do
- {
- flash = tls_mem_alloc(sizeof(*flash));
- if (flash == NULL)
- {
- TLS_DBGPRT_ERR("allocate \"struct tls_param_flash\" fail!\n");
- err = TLS_PARAM_STATUS_EMEM;
- break;
- }
- memset(flash, 0, sizeof(*flash));
- for (i = 0; i < TLS_PARAM_PARTITION_NUM; i++)
- {
- TLS_DBGPRT_INFO("read parameter partition - %d.\n", i);
- tls_fls_read((i == 0) ? TLS_FLASH_PARAM1_ADDR : TLS_FLASH_PARAM2_ADDR, (u8 *)flash, sizeof(*flash));
- TLS_DBGPRT_INFO("patition %d magic - 0x%x, crc -0x%x .\n", i, flash->magic, flash->crc32);
- if (flash->magic != TLS_PARAM_MAGIC)
- {
- TLS_DBGPRT_WARNING("parameter partition - %d has been damaged.\n", i);
- is_damage[i] = TRUE;
- damaged++;
- //continue;
- }
- else if (get_crc32((u8 *)flash, flash->length - 4) != *(u32*)((u8*)flash + flash->length - 4))
- {
- is_damage[i] = TRUE;
- damaged++;
- //continue;
- }
- else
- {
- /* Load the latest parameters */
- TLS_DBGPRT_INFO("read parameter partition modify count - %d.\n", flash->modify_count);
- TLS_DBGPRT_INFO("current parameter partition modify count - %d.\n", flash_param.modify_count);
- if ((flash_param.magic == 0) || (flash_param.modify_count < flash->modify_count))
- {
- TLS_DBGPRT_INFO("update the parameter in sram using partition - %d,%d,%d.\n", i, flash->length,sizeof(*flash));
- if (flash->length != sizeof(*flash)){
- MEMCPY(&flash_param, flash, (flash->length-4));
- #if USE_TWO_RAM_FOR_PARAMETER
- MEMCPY(&sram_param, &flash_param.parameters, sizeof(sram_param));
- #endif
- }else{
- MEMCPY(&flash_param, flash, sizeof(*flash));
- #if USE_TWO_RAM_FOR_PARAMETER
- MEMCPY(&sram_param, &flash_param.parameters, sizeof(sram_param));
- #endif
- }
- }
- memset(flash, 0, sizeof(*flash));
- }
- /* try to erase one sector at the same block to restore parameter area*/
- if ((tryrestore == 0)&&(damaged >= TLS_PARAM_PARTITION_NUM))
- {
- damaged= 0;
- is_damage[0] = is_damage[1] = FALSE;
- memset(&flash_param, 0, sizeof(flash_param));
- #if USE_TWO_RAM_FOR_PARAMETER
- memset(&sram_param, 0, sizeof(sram_param));
- #endif
- tls_fls_erase(TLS_FLASH_PARAM_RESTORE_ADDR / INSIDE_FLS_SECTOR_SIZE);
- tryrestore = 1;
- i = -1;
- }
- }
- if (damaged >= TLS_PARAM_PARTITION_NUM)
- {
- TLS_DBGPRT_INFO("all the parameter partitions has been demaged and load the default parameters.\n");
- tls_param_load_factory_default();
- TLS_DBGPRT_INFO("write the default parameters to all the partitions.\n");
- err = param_to_flash(TLS_PARAM_ID_ALL, 1, 0);
- if (err != TLS_PARAM_STATUS_OK)
- {
- TLS_DBGPRT_ERR("write the default parameters to the partitions - 0 fail!\n");
- err = TLS_PARAM_STATUS_EIO;
- break;
- }
- err = param_to_flash(TLS_PARAM_ID_ALL, 1, 1);
- if (err != TLS_PARAM_STATUS_OK)
- {
- TLS_DBGPRT_ERR("write the default parameters to the partitions - 1 fail!\n");
- err = TLS_PARAM_STATUS_EIO;
- break;
- }
- //MEMCPY(&flash_param, flash, sizeof(*flash));
- }
- else
- {
- /* restore damaged partitions */
- for (i = 0; i < TLS_PARAM_PARTITION_NUM; i++)
- {
- if (is_damage[i])
- {
- TLS_DBGPRT_INFO(" restore damaged partitions - %d.\n", i);
- err = param_to_flash(TLS_PARAM_ID_ALL, -1, i);
- if (err != TLS_PARAM_STATUS_OK)
- {
- TLS_DBGPRT_ERR("write the default parameters to the partitions - %d fail!\n", i);
- err = TLS_PARAM_STATUS_EIO;
- break;
- }
- }
- }
- if (err == TLS_PARAM_STATUS_OK)
- {
- break;
- }
- }
- }while (0);
- tls_os_sem_release(sys_param_lock);
- if (flash)
- {
- tls_mem_free(flash);
- }
- #if 0
- TLS_DBGPRT_INFO("sys_param = 0x%x, *sys_param = 0x%x\n", sys_param, *sys_param);
- if (sys_param)
- {
- *sys_param = &sram_param;
- }
- TLS_DBGPRT_INFO("sys_param = 0x%x, *sys_param = 0x%x\n", sys_param, *sys_param);
- #endif
- return err;
- }
- #define TLS_USER_MAGIC 0x574D3031 // WM01
- int tls_param_load_user(struct tls_sys_param *param)
- {
- u32 magic, crc32, offset;
- offset = TLS_FLASH_PARAM_DEFAULT;
- tls_fls_read(offset, (u8 *)&magic, 4);
- if(TLS_USER_MAGIC != magic)
- {
- TLS_DBGPRT_INFO("no user default param = %x!!!\r\n", magic);
- return TLS_PARAM_STATUS_EINVALID;
- }
- offset += 4;
- memset(param, 0, sizeof(*param));
- tls_fls_read(offset, (u8 *)param, sizeof(struct tls_sys_param));
- offset += sizeof(struct tls_sys_param);
- tls_fls_read(offset, (u8 *)&crc32, 4);
- if(crc32 != get_crc32((u8 *)param, sizeof(struct tls_sys_param)))
- {
- TLS_DBGPRT_INFO("user default param crc err =%x!!!\r\n", crc32);
- return TLS_PARAM_STATUS_EINVALID;
- }
- return TLS_PARAM_STATUS_OK;
- }
- /**********************************************************************************************************
- * Description: This function is used to load the system default parameters.
- *
- * Arguments : param is the param point
- *
- * Returns :
- *
- * Notes : This function read user defined parameters first, if wrong, all the parameters restore factory settings.
- **********************************************************************************************************/
- void tls_param_load_factory_default(void)
- {
- #if USE_TWO_RAM_FOR_PARAMETER
- struct tls_sys_param *param = &sram_param;
- #else
- struct tls_sys_param *param = &flash_param.parameters;
- #endif
- if (param == NULL) {return;}
- TLS_DBGPRT_INFO("load the default parameters.\n");
- memset(param, 0, sizeof(*param));
- MEMCPY(¶m->hardware_version, factory_default_hardware, 8);
- param->wireless_region = TLS_PARAM_REGION_1_BG_BAND;
- param->channel = 1;
- param->channellist = 0x3FFF;
- #if TLS_CONFIG_11N
- param->wbgr.bg = TLS_PARAM_PHY_11BGN_MIXED;
- param->wbgr.max_rate = TLS_PARAM_TX_RATEIDX_MCS13;
- #else
- param->wbgr.bg = TLS_PARAM_PHY_11BG_MIXED;
- param->wbgr.max_rate = TLS_PARAM_TX_RATEIDX_36M;
- #endif
- param->ssid_broadcast_enable = TLS_PARAM_SSIDBRD_ENABLE;
- param->encry = TLS_PARAM_ENCRY_OPEN;
- #if 0 //def CONFIG_AP
- param->wireless_protocol = TLS_PARAM_IEEE80211_SOFTAP;
- tls_efuse_read(TLS_EFUSE_MACADDR_OFFSET, mac_addr, 6);
- ssid_len = sprintf((char *)¶m->ssid.ssid, "cuckoo_softap_%02x%02x%02x", mac_addr[3], mac_addr[4], mac_addr[5]);
- param->ssid.ssid_len = ssid_len;
- #else
- param->wireless_protocol = TLS_PARAM_IEEE80211_INFRA;
- #endif
- param->auto_retrycnt = 255;
- param->auto_roam = TLS_PARAM_ROAM_DISABLE;
- param->auto_powersave = TLS_PARAM_PSM_DISABLE;
- param->auto_reconnect = 0;
- //param->wps.wps_enable = TLS_PARAM_WPS_DISABLE;
- param->auto_mode = TLS_PARAM_MANUAL_MODE;
- param->transparent_trigger_length = 512;
- param->uart_cfg.baudrate = TLS_PARAM_UART_BAUDRATE_B115200;
- param->uart_cfg.stop_bits = TLS_PARAM_UART_STOPBITS_1BITS;
- param->uart_cfg.parity = TLS_PARAM_UART_PARITY_NONE;
- param->user_port_mode = TLS_PARAM_USR_INTF_LUART;
- param->ipcfg.dhcp_enable = TLS_PARAM_DHCP_ENABLE;
- param->ipcfg.ip[0] = 192;
- param->ipcfg.ip[1] = 168;
- param->ipcfg.ip[2] = 1;
- param->ipcfg.ip[3] = 1;
- param->ipcfg.netmask[0] = 255;
- param->ipcfg.netmask[1] = 255;
- param->ipcfg.netmask[2] = 255;
- param->ipcfg.netmask[3] = 0;
- param->ipcfg.gateway[0] = 192;
- param->ipcfg.gateway[1] = 168;
- param->ipcfg.gateway[2] = 1;
- param->ipcfg.gateway[3] = 1;
- param->ipcfg.dns1[0] = 192;
- param->ipcfg.dns1[1] = 168;
- param->ipcfg.dns1[2] = 1;
- param->ipcfg.dns1[3] = 1;
- param->ipcfg.dns2[0] = 192;
- param->ipcfg.dns2[1] = 168;
- param->ipcfg.dns2[2] = 1;
- param->ipcfg.dns2[3] = 1;
- strcpy((char *)param->local_dnsname, "local.xt804");
- strcpy((char *)param->local_device_name, "xt804");
- param->remote_socket_cfg.protocol = TLS_PARAM_SOCKET_TCP;
- param->remote_socket_cfg.client_or_server = TLS_PARAM_SOCKET_SERVER;
- param->remote_socket_cfg.port_num = TLS_PARAM_SOCKET_DEFAULT_PORT;
- memset(param->remote_socket_cfg.host, 0, 32);
- param->EscapeChar = 0x2b;
- param->EscapePeriod = 200;
- param->WebsCfg.AutoRun = 1;
- param->WebsCfg.PortNum = 80;
- param->debug_mode = 0;
- memset(param->PassWord, '0', 6);
- param->channel4softap = 11;
- param->encry4softap = TLS_PARAM_ENCRY_OPEN;
- param->ipcfg4softap.dhcp_enable = TLS_PARAM_DHCP_ENABLE;
- param->ipcfg4softap.ip[0] = 192;
- param->ipcfg4softap.ip[1] = 168;
- param->ipcfg4softap.ip[2] = 0;
- param->ipcfg4softap.ip[3] = 1;
- param->ipcfg4softap.netmask[0] = 255;
- param->ipcfg4softap.netmask[1] = 255;
- param->ipcfg4softap.netmask[2] = 255;
- param->ipcfg4softap.netmask[3] = 0;
- param->ipcfg4softap.gateway[0] = 192;
- param->ipcfg4softap.gateway[1] = 168;
- param->ipcfg4softap.gateway[2] = 0;
- param->ipcfg4softap.gateway[3] = 1;
- param->ipcfg4softap.dns1[0] = 192;
- param->ipcfg4softap.dns1[1] = 168;
- param->ipcfg4softap.dns1[2] = 0;
- param->ipcfg4softap.dns1[3] = 1;
- param->ipcfg4softap.dns2[0] = 0;
- param->ipcfg4softap.dns2[1] = 0;
- param->ipcfg4softap.dns2[2] = 0;
- param->ipcfg4softap.dns2[3] = 0;
- #if TLS_CONFIG_SOFTAP_11N
- param->wbgr4softap.bg = TLS_PARAM_PHY_11BGN_MIXED;
- param->wbgr4softap.max_rate = TLS_PARAM_TX_RATEIDX_36M;
- #else
- param->wbgr4softap.bg = TLS_PARAM_PHY_11BG_MIXED;
- param->wbgr4softap.max_rate = TLS_PARAM_TX_RATEIDX_36M;
- #endif
- strcpy(param->sntp_service1, "cn.ntp.org.cn");
- strcpy(param->sntp_service2, "ntp.sjtu.edu.cn");
- strcpy(param->sntp_service3, "us.pool.ntp.org");
- }
- /**********************************************************************************************************
- * Description: This function is used to set system parameter.
- *
- * Arguments : id param id,from TLS_PARAM_ID_SSID to (TLS_PARAM_ID_MAX - 1)
- * argc store parameters
- * to_flash whether the parameter is written to flash,1 write
- * Returns : TLS_PARAM_STATUS_OK set success
- * TLS_PARAM_STATUS_EINVALID invalid param
- **********************************************************************************************************/
- int tls_param_set(int id, void *argv, bool to_flash)
- {
- int err = 0;
- #if USE_TWO_RAM_FOR_PARAMETER
- struct tls_sys_param *param = &sram_param;
- #else
- struct tls_sys_param *param = &flash_param.parameters;
- #endif
- if ((id < TLS_PARAM_ID_ALL) || (id >= TLS_PARAM_ID_MAX) || (argv == NULL)) {return TLS_PARAM_STATUS_EINVALID;}
- if(updp_mode)
- {
- param = tls_param_user_param_init();
- if (NULL == param)
- {
- return TLS_PARAM_STATUS_EMEM;
- }
- }
- tls_os_sem_acquire(sys_param_lock, 0);
- err = TLS_PARAM_STATUS_OK;
- switch (id) {
- case TLS_PARAM_ID_ALL:
- MEMCPY(param, argv, sizeof(struct tls_sys_param));
- break;
- case TLS_PARAM_ID_SSID:
- MEMCPY(¶m->ssid, argv, sizeof(struct tls_param_ssid));
- break;
- case TLS_PARAM_ID_ENCRY:
- param->encry = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_KEY:
- MEMCPY(¶m->key, argv, sizeof(struct tls_param_key));
- break;
- case TLS_PARAM_ID_IP:
- MEMCPY(¶m->ipcfg, argv, sizeof(struct tls_param_ip));
- break;
- case TLS_PARAM_ID_AUTOMODE:
- param->auto_mode = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_DEFSOCKET:
- MEMCPY(¶m->remote_socket_cfg, argv, sizeof(struct tls_param_socket));
- break;
- case TLS_PARAM_ID_BSSID:
- MEMCPY(¶m->bssid, argv, sizeof(struct tls_param_bssid));
- break;
- case TLS_PARAM_ID_CHANNEL:
- param->channel = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_CHANNEL_LIST:
- param->channellist = *((u16*)argv);
- break;
- case TLS_PARAM_ID_CHANNEL_EN:
- param->channel_enable = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_COUNTRY_REGION:
- param->wireless_region = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_WPROTOCOL:
- param->wireless_protocol = *((u8 *)argv);;
- break;
- case TLS_PARAM_ID_ADHOC_AUTOCREATE:
- param->auto_create_adhoc = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_ROAMING:
- param->auto_roam = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_AUTO_RETRY_CNT:
- param->auto_retrycnt = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_WBGR:
- MEMCPY(¶m->wbgr, argv, sizeof(struct tls_param_bgr));
- break;
- case TLS_PARAM_ID_USRINTF:
- param->user_port_mode = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_AUTO_TRIGGER_LENGTH:
- param->transparent_trigger_length = *((u16 *)argv);
- break;
- case TLS_PARAM_ID_AUTO_TRIGGER_PERIOD:
- param->transparent_trigger_period = *((u16 *)argv);
- break;
- case TLS_PARAM_ID_ESCAPE_CHAR:
- param->EscapeChar = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_ESCAPE_PERIOD:
- param->EscapePeriod = *((u16 *)argv);
- break;
- case TLS_PARAM_ID_IO_MODE:
- param->IoMode = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_CMD_MODE:
- param->CmdMode = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_PASSWORD:
- MEMCPY(param->PassWord, (u8 *)argv, sizeof(param->PassWord));
- break;
- case TLS_PARAM_ID_WEBS_CONFIG:
- param->WebsCfg = *((struct tls_webs_cfg *)argv);
- break;
- case TLS_PARAM_ID_DEBUG_MODE:
- param->debug_mode = *((u32 *)argv);;
- break;
- case TLS_PARAM_ID_HARDVERSION:
- MEMCPY(¶m->hardware_version, argv, sizeof(struct tls_param_hardware_version));
- break;
- case TLS_PARAM_ID_BRDSSID:
- param->ssid_broadcast_enable = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_DNSNAME:
- strcpy((char *)param->local_dnsname, (char *)argv);
- break;
- case TLS_PARAM_ID_DEVNAME:
- strcpy((char *)param->local_device_name, argv);
- break;
- case TLS_PARAM_ID_PSM:
- param->auto_powersave = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_ORAY_CLIENT:
- MEMCPY(¶m->oray_client_setting, argv, sizeof(struct tls_param_oray_client));
- break;
- case TLS_PARAM_ID_UPNP:
- param->upnp_enable = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_UART:
- MEMCPY(¶m->uart_cfg, argv, sizeof(struct tls_param_uart));
- break;
- #if TLS_CONFIG_WPS
- case TLS_PARAM_ID_WPS:
- MEMCPY(¶m->wps, argv, sizeof(struct tls_param_wps));
- break;
- #endif
- case TLS_PARAM_ID_ONESHOT_CFG:
- param->oneshotflag = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_SHA1:
- MEMCPY(¶m->psk, (u8 *)argv, sizeof(struct tls_param_sha1));
- break;
- case TLS_PARAM_ID_ORIGIN_KEY:
- MEMCPY( ¶m->original_key, (u8*)argv, sizeof(struct tls_param_original_key));
- break;
- case TLS_PARAM_ID_ORIGIN_SSID:
- MEMCPY( ¶m->original_ssid, (u8*)argv, sizeof(struct tls_param_ssid));
- break;
- case TLS_PARAM_ID_AUTO_RECONNECT:
- param->auto_reconnect = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_QUICK_CONNECT:
- MEMCPY(¶m->quick_connect, argv, sizeof(struct tls_param_quick_connect));
- break;
- case TLS_PARAM_ID_KEY_CHANGE:
- param->key_changed = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_SSID_CHANGE:
- param->ssid_changed = *((u8 *)argv);
- break;
- #if TLS_CONFIG_AP
- case TLS_PARAM_ID_SOFTAP_SSID:
- MEMCPY(¶m->apsta_ssid, argv, sizeof(struct tls_param_ssid));
- break;
- case TLS_PARAM_ID_SOFTAP_PSK:
- MEMCPY(¶m->apsta_psk, argv, sizeof(struct tls_param_sha1));
- break;
- case TLS_PARAM_ID_SOFTAP_ENCRY:
- param->encry4softap = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_SOFTAP_KEY:
- MEMCPY(¶m->key4softap, argv, sizeof(struct tls_param_key));
- break;
- case TLS_PARAM_ID_SOFTAP_IP:
- MEMCPY(¶m->ipcfg4softap, argv, sizeof(struct tls_param_ip));
- break;
- case TLS_PARAM_ID_SOFTAP_CHANNEL:
- param->channel4softap = *((u8 *)argv);
- break;
- case TLS_PARAM_ID_SOFTAP_WBGR:
- MEMCPY(¶m->wbgr4softap, argv, sizeof(struct tls_param_bgr));
- break;
- #endif
- case TLS_PARAM_ID_SNTP_SERVER1:
- strncpy(param->sntp_service1, (const char *)argv, strlen(argv)+1);
- break;
- case TLS_PARAM_ID_SNTP_SERVER2:
- strncpy(param->sntp_service2, (const char *)argv, strlen(argv)+1);
- break;
- case TLS_PARAM_ID_SNTP_SERVER3:
- strncpy(param->sntp_service3, (const char *)argv, strlen(argv)+1);
- break;
- case TLS_PARAM_ID_TEM_OFFSET:
- MEMCPY(¶m->params_tem, argv, sizeof(struct tls_param_tem_offset));
- break;
- case TLS_PARAM_ID_BT_ADAPTER:
- MEMCPY(¶m->adapter_t, argv, sizeof(bt_adapter_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_1:
- MEMCPY(¶m->remote_device1, argv, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_2:
- MEMCPY(¶m->remote_device2, argv, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_3:
- MEMCPY(¶m->remote_device3, argv, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_4:
- MEMCPY(¶m->remote_device4, argv, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_5:
- MEMCPY(¶m->remote_device5, argv, sizeof(bt_remote_device_t));
- break;
- #if 0
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_6:
- MEMCPY(¶m->remote_device6, argv, sizeof(bt_remote_device_t));
- break;
-
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_7:
- MEMCPY(¶m->remote_device7, argv, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_8:
- MEMCPY(¶m->remote_device8, argv, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_9:
- MEMCPY(¶m->remote_device9, argv, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_10:
- MEMCPY(¶m->remote_device10, argv, sizeof(bt_remote_device_t));
- break;
- #endif
- default:
- TLS_DBGPRT_WARNING("invalid parameter id - %d!\n", id);
- err = TLS_PARAM_STATUS_EINVALIDID;
- goto exit;
- }
- if (to_flash && !updp_mode) {
- err = param_to_flash(id, -1, -1);
- TLS_DBGPRT_INFO("write the parameter to spi flash - %d.\n", err);
- }
- exit:
- tls_os_sem_release(sys_param_lock);
- return err;
- }
- /**********************************************************************************************************
- * Description: This function is used to get system parameter.
- *
- * Arguments : id param id,from TLS_PARAM_ID_SSID to (TLS_PARAM_ID_MAX - 1)
- * argc store parameters
- * from_flash whether the parameter is readed from flash,1 read from flash
- * Returns : TLS_PARAM_STATUS_OK success
- * TLS_PARAM_STATUS_EINVALID invalid param
- **********************************************************************************************************/
- int tls_param_get(int id, void *argv, bool from_flash)
- {
- int err;
- struct tls_sys_param *src = NULL;
- if ((id < TLS_PARAM_ID_ALL) || (id >= TLS_PARAM_ID_MAX)) {return TLS_PARAM_STATUS_EINVALID;}
- err = TLS_PARAM_STATUS_OK;
- #if USE_TWO_RAM_FOR_PARAMETER
- if (from_flash) {src = &flash_param.parameters;}
- else {src = &sram_param;}
- #else
- struct tls_param_flash *curflashparm = NULL;
- if (from_flash)
- {
- curflashparm = tls_mem_alloc(sizeof(struct tls_param_flash));
- if (curflashparm)
- {
- if (TLS_FLS_STATUS_OK == tls_fls_read((flash_param.partition_num == 0) ? TLS_FLASH_PARAM1_ADDR : TLS_FLASH_PARAM2_ADDR, (u8 *)curflashparm, sizeof(struct tls_param_flash)))
- {
- src = &curflashparm->parameters;
- }
- }
- }
- if (NULL == src)
- {
- src = &flash_param.parameters;
- }
- #endif
- tls_os_sem_acquire(sys_param_lock, 0);
- switch (id) {
- case TLS_PARAM_ID_ALL:
- MEMCPY(argv, src, sizeof(struct tls_sys_param));
- break;
- case TLS_PARAM_ID_SSID:
- MEMCPY(argv, &src->ssid, sizeof(struct tls_param_ssid));
- break;
- case TLS_PARAM_ID_ENCRY:
- *((u8 *)argv) = src->encry;
- break;
- case TLS_PARAM_ID_KEY:
- MEMCPY(argv, &src->key, sizeof(struct tls_param_key));
- break;
- case TLS_PARAM_ID_IP:
- MEMCPY(argv, &src->ipcfg, sizeof(struct tls_param_ip));
- break;
- case TLS_PARAM_ID_AUTOMODE:
- *((u8 *)argv) = src->auto_mode;
- break;
- case TLS_PARAM_ID_DEFSOCKET:
- MEMCPY(argv, &src->remote_socket_cfg, sizeof(struct tls_param_socket));
- break;
- case TLS_PARAM_ID_BSSID:
- MEMCPY(argv, &src->bssid, sizeof(struct tls_param_bssid));
- break;
- case TLS_PARAM_ID_CHANNEL:
- *((u8 *)argv) = src->channel;
- break;
- case TLS_PARAM_ID_CHANNEL_LIST:
- *((u16*)argv) = src->channellist;
- break;
- case TLS_PARAM_ID_CHANNEL_EN:
- *((u8 *)argv) = src->channel_enable;
- break;
- case TLS_PARAM_ID_COUNTRY_REGION:
- *((u8 *)argv) = src->wireless_region;
- break;
- case TLS_PARAM_ID_WPROTOCOL:
- *((u8 *)argv) = src->wireless_protocol;
- break;
- case TLS_PARAM_ID_ADHOC_AUTOCREATE:
- *((u8 *)argv) = src->auto_create_adhoc;
- break;
- case TLS_PARAM_ID_ROAMING:
- *((u8 *)argv) = src->auto_roam;
- break;
- case TLS_PARAM_ID_AUTO_RETRY_CNT:
- *((u8 *)argv) = src->auto_retrycnt;
- break;
- case TLS_PARAM_ID_WBGR:
- MEMCPY(argv, &src->wbgr, sizeof(struct tls_param_bgr));
- break;
- case TLS_PARAM_ID_USRINTF:
- *((u8 *)argv) = src->user_port_mode;
- break;
- case TLS_PARAM_ID_AUTO_TRIGGER_LENGTH:
- *((u16 *)argv) = src->transparent_trigger_length;
- break;
- case TLS_PARAM_ID_AUTO_TRIGGER_PERIOD:
- *((u16 *)argv) = src->transparent_trigger_period;
- break;
- case TLS_PARAM_ID_ESCAPE_CHAR:
- *((u8 *)argv) = src->EscapeChar;
- break;
- case TLS_PARAM_ID_ESCAPE_PERIOD:
- *((u16 *)argv) = src->EscapePeriod;
- break;
- case TLS_PARAM_ID_IO_MODE:
- *((u8 *)argv) = src->IoMode;
- break;
- case TLS_PARAM_ID_CMD_MODE:
- *((u8 *)argv) = src->CmdMode;
- break;
- case TLS_PARAM_ID_PASSWORD:
- MEMCPY((u8 *)argv, src->PassWord, sizeof(src->PassWord));
- break;
- case TLS_PARAM_ID_WEBS_CONFIG:
- *((struct tls_webs_cfg *)argv) = src->WebsCfg;
- break;
- case TLS_PARAM_ID_DEBUG_MODE:
- *((u32 *)argv) = src->debug_mode;
- break;
- case TLS_PARAM_ID_HARDVERSION:
- MEMCPY(argv, &src->hardware_version, sizeof(struct tls_param_hardware_version));
- break;
- case TLS_PARAM_ID_BRDSSID:
- *((u8 *)argv) = src->ssid_broadcast_enable;
- break;
- case TLS_PARAM_ID_DNSNAME:
- strcpy((char *)argv, (char *)src->local_dnsname);
- break;
- case TLS_PARAM_ID_DEVNAME:
- strcpy((char *)argv, (char *)src->local_device_name);
- break;
- case TLS_PARAM_ID_PSM:
- *((u8 *)argv) = src->auto_powersave;
- break;
- case TLS_PARAM_ID_ORAY_CLIENT:
- MEMCPY(argv, &src->oray_client_setting, sizeof(struct tls_param_oray_client));
- break;
- case TLS_PARAM_ID_UPNP:
- *((u8 *)argv) = src->upnp_enable;
- break;
- case TLS_PARAM_ID_UART:
- MEMCPY(argv, &src->uart_cfg, sizeof(struct tls_param_uart));
- break;
- #if TLS_CONFIG_WPS
- case TLS_PARAM_ID_WPS:
- MEMCPY(argv, &src->wps, sizeof(struct tls_param_wps));
- break;
- #endif
- case TLS_PARAM_ID_ONESHOT_CFG:
- *((u8 *)argv) = src->oneshotflag;
- break;
- case TLS_PARAM_ID_SHA1:
- MEMCPY(argv, &src->psk, sizeof(struct tls_param_sha1));
- break;
- case TLS_PARAM_ID_ORIGIN_KEY:
- MEMCPY(argv, &src->original_key, sizeof(struct tls_param_original_key));
- break;
- case TLS_PARAM_ID_ORIGIN_SSID:
- MEMCPY(argv, &src->original_ssid, sizeof(struct tls_param_ssid));
- break;
- case TLS_PARAM_ID_AUTO_RECONNECT:
- *((u8 *)argv) = src->auto_reconnect;
- break;
- case TLS_PARAM_ID_QUICK_CONNECT:
- MEMCPY(argv, &src->quick_connect, sizeof(struct tls_param_quick_connect));
- break;
- case TLS_PARAM_ID_KEY_CHANGE:
- *((u8 *)argv) = src->key_changed;
- break;
- case TLS_PARAM_ID_SSID_CHANGE:
- *((u8 *)argv) = src->ssid_changed;
- break;
- #if TLS_CONFIG_AP
- case TLS_PARAM_ID_SOFTAP_SSID:
- MEMCPY(argv, &src->apsta_ssid, sizeof(struct tls_param_ssid));
- break;
- case TLS_PARAM_ID_SOFTAP_PSK:
- MEMCPY(argv, &src->apsta_psk, sizeof(struct tls_param_sha1));
- break;
- case TLS_PARAM_ID_SOFTAP_ENCRY:
- *((u8 *)argv) = src->encry4softap;
- break;
- case TLS_PARAM_ID_SOFTAP_KEY:
- MEMCPY(argv, &src->key4softap, sizeof(struct tls_param_key));
- break;
- case TLS_PARAM_ID_SOFTAP_IP:
- MEMCPY(argv, &src->ipcfg4softap, sizeof(struct tls_param_ip));
- break;
- case TLS_PARAM_ID_SOFTAP_CHANNEL:
- *((u8 *)argv) = src->channel4softap;
- break;
- case TLS_PARAM_ID_SOFTAP_WBGR:
- MEMCPY(argv, &src->wbgr4softap, sizeof(struct tls_param_bgr));
- break;
- #endif
- case TLS_PARAM_ID_SNTP_SERVER1:
- strncpy(argv, src->sntp_service1, strlen(src->sntp_service1)+1);
- break;
- case TLS_PARAM_ID_SNTP_SERVER2:
- strncpy(argv, src->sntp_service2, strlen(src->sntp_service2)+1);
- break;
- case TLS_PARAM_ID_SNTP_SERVER3:
- strncpy(argv, src->sntp_service3, strlen(src->sntp_service3)+1);
- break;
- case TLS_PARAM_ID_TEM_OFFSET:
- MEMCPY(argv, &src->params_tem, sizeof(struct tls_param_tem_offset));
- break;
-
- case TLS_PARAM_ID_BT_ADAPTER:
- MEMCPY(argv, &src->adapter_t, sizeof(bt_adapter_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_1:
- MEMCPY(argv,&src->remote_device1, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_2:
- MEMCPY(argv,&src->remote_device2, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_3:
- MEMCPY(argv,&src->remote_device3, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_4:
- MEMCPY(argv,&src->remote_device4, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_5:
- MEMCPY(argv,&src->remote_device5, sizeof(bt_remote_device_t));
- break;
- #if 0
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_6:
- MEMCPY(argv,&src->remote_device6, sizeof(bt_remote_device_t));
- break;
-
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_7:
- MEMCPY(argv,&src->remote_device7, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_8:
- MEMCPY(argv,&src->remote_device8, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_9:
- MEMCPY(argv,&src->remote_device9, sizeof(bt_remote_device_t));
- break;
- case TLS_PARAM_ID_BT_REMOTE_DEVICE_10:
- MEMCPY(argv,&src->remote_device10, sizeof(bt_remote_device_t));
- break;
- #endif
- default:
- TLS_DBGPRT_WARNING("invalid parameter id - %d!\n", id);
- err = TLS_PARAM_STATUS_EINVALIDID;
- break;
- }
- #if USE_TWO_RAM_FOR_PARAMETER
- #else
- if (curflashparm)
- {
- tls_mem_free(curflashparm);
- }
- #endif
- tls_os_sem_release(sys_param_lock);
- return err;
- }
- /**********************************************************************************************************
- * Description: This function is used to write parameter to flash.
- *
- * Arguments : id param id,from TLS_PARAM_ID_ALL to (TLS_PARAM_ID_MAX - 1)
- *
- * Returns : * Returns : TLS_PARAM_STATUS_OK success
- * TLS_PARAM_STATUS_EINVALID invalid param
- * TLS_PARAM_STATUS_EIO error
- **********************************************************************************************************/
- int tls_param_to_flash(int id)
- {
- int err = 0;
- tls_os_sem_acquire(sys_param_lock, 0);
- #if USE_TWO_RAM_FOR_PARAMETER
- if (TLS_PARAM_ID_ALL == id)
- {
- if (0 == memcmp(&sram_param, &flash_param.parameters,sizeof(sram_param)))
- {
- tls_os_sem_release(sys_param_lock);
- return TLS_FLS_STATUS_OK;
- }
- }
- err = param_to_flash(id, -1, -1);
- #else
- if (TLS_PARAM_ID_ALL == id)
- {
- struct tls_param_flash *sram_param;
- sram_param = tls_mem_alloc(sizeof(struct tls_param_flash));
- if (sram_param)
- {
- if (TLS_FLS_STATUS_OK != tls_fls_read((flash_param.partition_num == 0) ? TLS_FLASH_PARAM1_ADDR : TLS_FLASH_PARAM2_ADDR, (u8 *)sram_param, sizeof(struct tls_param_flash)))
- {
- /*write anyway!!!*/
- }
- else
- { /*if not same, write to flash*/
- if (0 == memcmp(&sram_param->parameters, &flash_param.parameters,sizeof(struct tls_sys_param)))
- {
- tls_mem_free(sram_param);
- tls_os_sem_release(sys_param_lock);
- return TLS_FLS_STATUS_OK;
- }
- }
- tls_mem_free(sram_param);
- }
- }
- err = param_to_flash(id, -1, -1);
- #endif
- tls_os_sem_release(sys_param_lock);
- return err;
- }
- /**********************************************************************************************************
- * Description: This function is used to load default parametes to memory.
- *
- * Arguments :
- *
- * Returns :
- *
- * Notes : This function read user defined parameters first, if wrong, all the parameters restore factory settings.
- **********************************************************************************************************/
- int tls_param_to_default(void)
- {
- int err = 0;
- tls_param_load_factory_default();
- err = param_to_flash(TLS_PARAM_ID_ALL, 1, 0);
- if(err)
- return err;
- err = param_to_flash(TLS_PARAM_ID_ALL, 1, 1);
- flash_param.magic = 0;
- return err;
- }
- struct tls_sys_param * tls_param_user_param_init(void)
- {
- if (NULL == user_default_param)
- {
- user_default_param = tls_mem_alloc(sizeof(*user_default_param));
- if (user_default_param)
- memset(user_default_param, 0, sizeof(*user_default_param));
- }
- return user_default_param;
- }
- /**********************************************************************************************************
- * Description: This function is used to modify user default parameters,then write to flash.
- *
- * Arguments :
- *
- * Returns :
- **********************************************************************************************************/
- int tls_param_save_user(struct tls_user_param *user_param)
- {
- struct tls_sys_param *param = NULL;
- param = tls_param_user_param_init();
- if (NULL == param)
- {
- return TLS_PARAM_STATUS_EMEM;
- }
- param->wireless_protocol = user_param->wireless_protocol;
- param->auto_mode = user_param->auto_mode;
- param->uart_cfg.baudrate = user_param->baudrate;
- param->user_port_mode = user_param->user_port_mode;
- param->ipcfg.dhcp_enable = user_param->dhcp_enable;
- param->auto_powersave = user_param->auto_powersave;
- MEMCPY(param->ipcfg.ip, user_param->ip, 4);
- MEMCPY(param->ipcfg.netmask, user_param->netmask, 4);
- MEMCPY(param->ipcfg.gateway, user_param->gateway, 4);
- MEMCPY(param->ipcfg.dns1, user_param->dns, 4);
- MEMCPY(param->ipcfg.dns2, user_param->dns, 4);
- param->remote_socket_cfg.protocol = user_param->socket_protocol;
- param->remote_socket_cfg.client_or_server = user_param->socket_client_or_server;
- param->remote_socket_cfg.port_num = user_param->socket_port_num;
- MEMCPY(param->remote_socket_cfg.host, user_param->socket_host, 32);
- MEMCPY(param->PassWord, user_param->PassWord, 6);
- MEMCPY(¶m->hardware_version, factory_default_hardware, 8);
- param->wireless_region = TLS_PARAM_REGION_1_BG_BAND;
- param->channel = 1;
- param->channellist = 0x3FFF;
- param->wbgr.bg = TLS_PARAM_PHY_11BG_MIXED;
- param->wbgr.max_rate = TLS_PARAM_TX_RATEIDX_36M;
- param->ssid_broadcast_enable = TLS_PARAM_SSIDBRD_ENABLE;
- param->encry = TLS_PARAM_ENCRY_OPEN;
- param->auto_retrycnt = 255;
- param->auto_roam = TLS_PARAM_ROAM_DISABLE;
- //param->wps.wps_enable = TLS_PARAM_WPS_DISABLE;
- param->transparent_trigger_length = 512;
- param->uart_cfg.stop_bits = TLS_PARAM_UART_STOPBITS_1BITS;
- param->uart_cfg.parity = TLS_PARAM_UART_PARITY_NONE;
- strcpy((char *)param->local_dnsname, "local.xt804");
- strcpy((char *)param->local_device_name, "xt804");
- param->EscapeChar = 0x2b;
- param->EscapePeriod = 200;
- param->debug_mode = 0;
- tls_param_save_user_default();
- return TLS_PARAM_STATUS_OK;
- }
- /**********************************************************************************************************
- * Description: This function is used to save user parameters to the flash.
- *
- * Arguments :
- *
- * Returns :
- **********************************************************************************************************/
- int tls_param_save_user_default(void)
- {
- u32 magic, crc32, offset;
- if (NULL == user_default_param)
- {
- return TLS_PARAM_STATUS_EMEM;
- }
- offset = TLS_FLASH_PARAM_DEFAULT;
- magic = TLS_USER_MAGIC;
- TLS_DBGPRT_INFO("=====>\n");
- tls_fls_write(offset, (u8 *)&magic, 4);
- offset += 4;
- tls_fls_write(offset, (u8 *)user_default_param, sizeof(struct tls_sys_param));
- offset += sizeof(struct tls_sys_param);
- crc32 = get_crc32((u8 *)user_default_param, sizeof(struct tls_sys_param));
- tls_fls_write(offset, (u8 *)&crc32, 4);
- return TLS_PARAM_STATUS_OK;
- }
- u8 tls_param_get_updp_mode(void)
- {
- return updp_mode;
- }
- void tls_param_set_updp_mode(u8 mode)
- {
- updp_mode = mode;
- }
|