一种eoc带wifi终端配置保存的方法

文档序号:10654245阅读:557来源:国知局
一种eoc带wifi终端配置保存的方法
【专利摘要】本发明提供了一种EOC带WIFI终端配置保存的方法,所述EOC设备保存有预先烧录的配置文件。本发明将配置文件转化为结构体,对配置文件的读写是针对结构体进行。而且,本发明将flash分成不同分区,会有一个专门分区作为配置文件分区,为了做到配置不丢失,将读写后的结构体转换为配置文件,再将配置文件拷贝到flash配置分区即可。本发明创造性的将配置文件转化为结构体进行读写,并对存储方法进行改进,有效的避免了现有技术中EOC设备重启配置丢失的问题,具有很好的使用价值。
【专利说明】
一种EOC带WIFI终端配置保存的方法
技术领域
[0001]本发明属于EOC通信技术领域,尤其涉及到一种EOC带WIFI终端配置保存的方法。
【背景技术】
[0002]随着现在智能手机、笔记本等无线设备的迅速普及,在广电行业的家庭网络中,带WIFI的EOC终端设备被越来越多的家庭所使用。运营商上门安装对家庭网关型设备进行相关配置之后用户才能上网,家庭网关设备必须保证掉电或重启设备配置不会丢失,或者设备永不掉电或重启(事实证明这是不可能的),否则每次设备重启都需要运营商再次上门配置才能让用户再次上网,这将极大增加运营商维护成本,用户体验也非常差,因此配置保存是家庭网关型设备的一个必备的基础功能。
[0003]同时由于家庭网关型设备是入户型设备,是不具备有串口这样的外部接口的,配置保存内容不需要提供给用户或者网管人员查看,配置保存就不需要像EOC局端设备那样采用CLI命令的方式来保存到文件系统那么麻烦。本发明提供家庭网关型设备一种简单的配置保存方法,包括配置的读取、写入、保存。通过该方法,EOC家庭网关型设备的配置将不会因为掉电、重启、升级而使得配置丢失导致用户无法上网。

【发明内容】

[0004]为解决上述问题,本发明提供了一种EOC带WIFI终端配置保存的方法,所述EOC设备保存有预先烧录的配置文件,所述方法包括如下步骤:
步骤一:将EOC设备的flash存储器分区,并选择一个分区作为配置文件保存区,将配置文件保存区挂载到文件系统中,所述配置文件包含若干配置项,每个配置项的格式为:关键词=配置值。
[0005]步骤二:读取烧录的配置文件,将其转换为一个结构体,所述结构体中的元素包括配置文件名、配置变化标记、实际配置项数值、用于保存配置文件中所有配置项的配置数组;所述结构体保持到内存中,所述配置数组设置有最大长度。
[0006]步骤三:在非flash存储器的文件系统中将结构体转化为配置文件格式,然后拷贝保存到flash存储器中的配置文件保存区。
[0007]步骤四:对EOC设备进行配置文件读取或者配置文件写入操作,当为配置文件读取操作时,流程如下:
步骤4.1:确定欲读取的关键词,该关键词对应一个等待赋值的读取参数。
[0008]步骤4.2:在结构体的配置数组的每个元素的关键词中逐一去匹配读取欲读取的关键词,如成功匹配则进行步骤4.3,若遍历完配置数组后仍没有匹配成功,则跳转到步骤4.4。
[0009]步骤4.3:拷贝匹配配置项的配置值给读取参数,返回成功。
[0010]步骤4.4:将读取参数赋值为空串并返回失败。
[0011 ]当为配置文件写入操作时,流程如下: 步骤4.1:确定欲进行配置写操作的关键词,该关键词有一个写入值。
[0012]步骤4.2:在结构体的配置数组每个配置项的关键词中逐一去匹配欲进行写配置操作的关键词。
[0013]步骤4.3:判断匹配结果,如成功匹配,则顺序执行步骤4.4、4.6,若遍历后配置数组后仍没有匹配成功,则顺序执行步骤4.5、4.6。
[0014]步骤4.4:判断写入值和原配置值是否相同,相同则认为配置没有变化,并将配置变化标记置O,若不同则将写入值赋值给配置值,并将配置变化标记置I。
[0015]步骤4.5:判定当前实际配置项数是否超过允许配置数组最大长度,若超过则返回失败,否则将写入关键词及写入值加入到元素数组中,同时将实际配置项数值增加I,配置变化标记置为I,返回成功。
[0016]步骤4.6:判断配置标记的值是否为I,如不为I则不进行任何操作,为I则在非flash的文件系统中将写入后的结构体转化为配置文件格式,然后拷贝保存到flash存储器中的配置文件保存区。
[0017]进一步的,结构体写入到非flash的文件系统的具体方法为:根据实际配置项数值,从O开始循环实际配置项数值次,将配置数组中的元素逐一写入到非flash的文件系统中。
[0018]进一步的,在步骤三中,配置文件中的空行不保存在配置数组中。
[0019]进一步的,在配置文件读取操作中,在结构体的配置数组的每个元素的关键词匹配过程中跳过注释行。
[0020]进一步的,在配置文件写入操作中,在结构体的配置数组的每个元素的关键词中匹配过程中跳过注释行。
[0021]进一步的,步骤一中,配置文件包含了EOC家庭网关型设备所需要的所有配置项。
【附图说明】
[0022]图1为配置文件写入操作的流程。
【具体实施方式】
[0023]本发明适用于EOC局端设备,在设备出厂的时候就将配置文件写好烧录在设备中。
[0024]下面对配置文件的设置进行介绍。
[0025]将EOC家庭网关型设备的所有配置均保存在一个特定的配置文件中,对于配置文件内容做以下规定:
I.配置文件每一行表示EOC家庭网关型设备的一项配置。
[0026]2.每一行配置采用固定格式保存,格式为:keyword=value。其中keyworod(即后述的关键词)是表示某一项配置的名称,命名根据厂商偏好自定义;value是该配置对应的值(即后述的配置值)。例如PPPOE账号(自定义该配置的名称为ppp_user)配置为user_test时,可以在配置文件中表示为:ppp_user=user_test。
[0027]3.keyword规定以小写字母、数字、下划线三种进行自由组合得到,这样避免复杂的命名方式带来较差的可读性。value用普通的字符串表示即可Aeyword和value均不能包含等号字符,因为采用字符,=,作为keyword和value的分隔符。
[0028]4.配置文件中的某行若是以开头表示该行是注释行;若该行是空行(包括只有空格的行)认为是无用行;其他行均认为是配置行。
[0029]5.若某项配置对应的值为空,S卩value为空,在配置文件中体现为:“keyword=”。即等号后面什么都没有。
[0030]6.为适配不同的开发环境,文件每一行结束采用‘ \n ’而非‘ \r\n ’。这样在配置读写时,只需要考虑行结束符为’\n’的情况,不需要考虑’\r\n’和’\n’同时存在的俩种情况。当然,这只是为了方便识别,具体选择可根据实际情况选择。
[0031]原始的配置文件最好是包含了EOC家庭网关型设备所需要的所有配置项,这样配置文件的keyword固化,变化的只会有value,不会在配置文件中再新增行。
[0032]下面对本方法进行详细说明,包括如下步骤:
步骤一:将EOC设备的flash存储器分区,并选择一个分区作为配置文件保存区,将配置文件保存区挂载到文件系统中,所述配置文件包含若干配置项,每个配置项的格式为:关键词=配置值。
[0033]步骤二:读取烧录的配置文件,将其转换为一个结构体。
[0034]若每次读写一个配置均要操作一次配置文件,由于文件操作需要打开、查询、读写、关闭一系列较复杂且耗时的操作,为了提高配置读写效率,将配置文件转换为一个结构体,对配置的读写变为对该结构体的读写。结构体示例如下;
typedef struct wifi_cfg_s {
char fname[WIFI_FNAME_LEN]; /* 配置文件名 */
char cfg_chg; /*配置变化标记,I表示变化0表示未变化*/
int arg_cnt; /*实际配置项数值*/
char arg[WIFI_MAX_ARG_NUM][WIFI_MAX_ARG_LEN + I]; /* 配置数组,每个元素是一项配置*/
} wifi_cfg_t;
宏定义说明:
WIFI_FNAME_LEN表示配置文件名长度;WIFI_MAX_ARG_NUM表示允许配置最大个数,即数组最大长度;WIFI_MAX_ARG_LEN表示一项配置采用“keywrod=value”形式在配置文件做为一行字符串的最大长度。这些值均可由厂商根据实际情况自行定义。
[0035]所述结构体中的元素包括配置文件名、配置变化标记、实际配置项数值、用于保存配置文件中所有配置项的配置数组;所述结构体保持到内存中,所述配置数组设置有最大长度。
[0036]步骤三:在非flash存储器的文件系统中将结构体转化为配置文件格式,然后拷贝保存到flash存储器中的配置文件保存区。
[0037]为了读写快速,本发明将配置保存在内存中的一个结构体里面。还需要将内存中结构体的配置保存到配置文件中,这样才能保证掉电或者重启设备时配置不会丢失。对于配置保存的技术点有:
设备flash中的内容是不会因为重启而丢失的,本发明将flash分成不同分区,会有一个专门分区作为配置文件分区。为了做到配置不丢失,将flash的配置分区挂载到文件系统中,再将配置文件拷贝到该文件系统即可。由于文件打开之后在没有关闭之前是没有真正完全写入到文件的,为了防止文件写入过程中用户突然掉电导致配置保存失败或者只保存了部分配置,这里不能直接打开文件系统中的文件。只能先写入到非flash的文件系统中,写入完毕之后再拷贝到flash配置分区的文件系统中去。
[0038]由于不知道何时会掉电,因此需要启动一个线程,对cfg_chg变量每间隔一段时间(比如ls,不宜太长)进行轮询,若该标记置为1,则需要进行一次配置文件保存的操作。若标记为0,则什么事情都不做。
[0039]结构体写入到非flash的文件系统的具体方法为:打开配置文件,从O开始循环arg_cnt次,将arg数组中的元素逐一写入到配置文件中,每一个数组元素写一行,最后关闭文件。
[0040]步骤四:对EOC设备进行配置文件读取或者配置文件写入操作,当为配置文件读取操作时,流程如下:
步骤4.1:确定欲读取的关键词,该关键词对应一个等待赋值的读取参数。
[0041]步骤4.2:在结构体的配置数组的每个元素的关键词中逐一去匹配读取欲读取的关键词,如成功匹配则进行步骤4.3,若遍历完配置数组后仍没有匹配成功,则跳转到步骤4.4。
[0042]步骤4.3:拷贝匹配配置项的配置值给读取参数,返回成功。
[0043]步骤4.4:将读取参数赋值为空串并返回失败。
[0044]由于保存在配置数组里面的格式是keyword=value的字串形式(如syslog_level =3),进行配置读写时,需要先查找等号字符确定该项配置的keyword,再查找行结束符’\n’确定该项配置对应的value。图中,nk、nv、ck、cv均是字符串,分别代表原配置项关键词、原配置值、欲写入的关键词、欲写入的关键词对应的写入值。
[0045]具体写入流程如下:
步骤4.1:确定欲进行配置写操作的关键词,该关键词有一个写入值。
[0046]步骤4.2:在结构体的配置数组每个配置项的关键词中逐一去匹配欲进行写配置操作的关键词。
[0047]步骤4.3:判断匹配结果,如成功匹配,则顺序执行步骤4.4、4.6,若遍历后配置数组后仍没有匹配成功,则顺序执行步骤4.5、4.6。
[0048]步骤4.4:判断写入值和原配置值是否相同,相同则认为配置没有变化,并将配置变化标记置O,若不同则将写入值赋值给配置值,并将配置变化标记置I。
[0049]步骤4.5:判定当前实际配置项数是否超过允许配置数组最大长度,若超过则返回失败,否则将写入关键词及写入值加入到元素数组中,同时将实际配置项数值增加I,配置变化标记置为I,返回成功。
[0050]步骤4.6:判断配置标记的值是否为I,如不为I则不进行任何操作,为I则在非flash的文件系统中将写入后的结构体转化为配置文件格式,然后拷贝保存到flash存储器中的配置文件保存区。
[0051]优选的,在配置文件读取操作中,在结构体的配置数组的每个元素的关键词匹配过程中跳过注释行。注释行是以开头。
[0052]优选的,在配置文件写入操作中,在结构体的配置数组的每个元素的关键词中匹配过程中跳过注释行。注释行是以开头。
[0053]需要说明的是,配置文件的修改可以是将EOC家庭网关型设备上电,打开设备web界面后进行修改操作。修改完毕之后,可以选择等待3秒左右时间直接掉电对设备进行重启,也可以立即选择通过web界面提供的设备重启功能对设备进行重启。待设备重启完成之后,打开设备web界面,即可观察到在重启之前进行的配置修改是保存成功了的。
[0054]本发明的有益效果为:
本发明创造性的将配置文件转化为结构体进行读写,并对存储方法进行改进,有效的避免了现有技术中EOC设备重启配置丢失的问题,具有很好的使用价值。
【主权项】
1.一种EOC带WIFI终端配置保存的方法,所述EOC设备保存有预先烧录的配置文件,其特征在于,包括如下步骤: 步骤一:将EOC设备的flash存储器分区,并选择一个分区作为配置文件保存区,将配置文件保存区挂载到文件系统中,所述配置文件包含若干配置项,每个配置项的格式为:关键词=配置值; 步骤二:读取烧录的配置文件,将其转换为一个结构体,所述结构体中的元素包括配置文件名、配置变化标记、实际配置项数值、用于保存配置文件中所有配置项的配置数组;所述结构体保持到内存中,所述配置数组设置有最大长度; 步骤三:在非flash存储器的文件系统中将结构体转化为配置文件格式,然后拷贝保存至IJf Iash存储器中的配置文件保存区; 步骤四:对EOC设备进行配置文件读取或者配置文件写入操作,当为配置文件读取操作时,流程如下: 步骤4.1:确定欲读取的关键词,该关键词对应一个等待赋值的读取参数; 步骤4.2:在结构体的配置数组的每个元素的关键词中逐一去匹配读取欲读取的关键词,如成功匹配则进行步骤4.3,若遍历完配置数组后仍没有匹配成功,则跳转到步骤4.4;步骤4.3:拷贝匹配配置项的配置值给读取参数,返回成功; 步骤4.4:将读取参数赋值为空串并返回失败; 当为配置文件写入操作时,流程如下: 步骤4.1:确定欲进行配置写操作的关键词,该关键词有一个写入值; 步骤4.2:在结构体的配置数组每个配置项的关键词中逐一去匹配欲进行写配置操作的关键词; 步骤4.3:判断匹配结果,如成功匹配,则顺序执行步骤4.4、4.6,若遍历后配置数组后仍没有匹配成功,则顺序执行步骤4.5,4.6; 步骤4.4:判断写入值和原配置值是否相同,相同则认为配置没有变化,并将配置变化标记置0,若不同则将写入值赋值给配置值,并将配置变化标记置I; 步骤4.5:判定当前实际配置项数是否超过允许配置数组最大长度,若超过则返回失败,否则将写入关键词及写入值加入到元素数组中,同时将实际配置项数值增加I,配置变化标记置为I,返回成功; 步骤4.6:判断配置标记的值是否为I,如不为I则不进行任何操作,为I则在非flash的文件系统中将写入后的结构体转化为配置文件格式,然后拷贝保存到flash存储器中的配置文件保存区。2.如权利要求1所述的EOC带WIFI终端配置保存的方法,其特征在于,结构体写入到非flash的文件系统的具体方法为:根据实际配置项数值,从O开始循环实际配置项数值次,将配置数组中的元素逐一写入到非flash的文件系统中。3.如权利要求1所述的EOC带WIFI终端配置保存的方法,其特征在于,在步骤三中,配置文件中的空行不保存在配置数组中。4.如权利要求1所述的EOC带WIFI终端配置保存的方法,其特征在于,在配置文件读取操作中,在结构体的配置数组的每个元素的关键词匹配过程中跳过注释行。5.如权利要求1所述的EOC带WIFI终端配置保存的方法,其特征在于,在配置文件写入操作中,在结构体的配置数组的每个元素的关键词中匹配过程中跳过注释行。6.如权利要求1所述的EOC带WIFI终端配置保存的方法,其特征在于,步骤一中,配置文件包含了 EOC家庭网关型设备所需要的所有配置项。
【文档编号】G06F9/445GK106020883SQ201610336512
【公开日】2016年10月12日
【申请日】2016年5月20日
【发明人】李昭
【申请人】成都广达新网科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1