一: cwmp.c
1: main
(1) cmsLog_init(); //日志初始化
(2) cmsMsg_init(); //消息初始化
(3) cwmpInit(); //为variable cwmp赋初值。
(4) getStaticValuesFromLocal(); //init cloudData about device.
(5) retrieveCloudcStatusItmes(); //
(6) while()
{
a. 根据msg->type 和 msg->wordData执行 cwmp_handle_event。
b. CMSMEM_FREE_BUF_AND_NULL_PTR(msg);
c. if ( cloudState.unhandledEvent == 0) continue;
d. if ( cloudGetWanInfo() == -1) break; 初始化cloudData的WAN口相关信息。
e. if ( cwmpInitAfterWanUp() == CWMP_ERR) continue; 在WanUp后为cwmp的parameter赋值。
f. if ( getChangeAbleValuesFromLocal() == -1) continue; 获取一些本地Cloud Object的信息, 并传到cloudData中。
g. cwmpPrepareParameters(); 为gInformList和parList赋值。
h. if ( cwmp_inform() != CWMP_OK) break; //建立与acs之间连接, 发包, 传送cwmp相关信息。
i. while( !cwmp.sessionFlag) //根据ACS response, 确定是否要再次发包, 及修改本地信息和修改连接状态。
j. do_finish(); //free data for response parse result。
}
(7) out:
cmsMdm_cleanup();
cmsMsg_cleanup();
return 0;
2. do_finish () good
//free data for response parse result.
3. url_parse () good
对cwmp.url作分析, 填充cwmp.host, cwmp.port, cwmp.page.
4. void cwmp_push_event(uint8_t code) good
根据code值, 对cloudState.unhandledEvents 进行赋值。
5. int cwmp_connect_acs(void) good
(1) cwmp.txFd = raw_connect( cwmp.addr, cwmp.port, cwmp.connectTimeOutMs)
返回socket 获取的File Descriptor.
6. int cwmp_disconnect(void) good
close(cwmp.txFd) //关闭txFd.
cwmp.txFd = CWMP_INVALID_SOCKET. -1
7. int cwmpInit( char *connUrl) good 为variable cwmp赋初值。
(1) strcpy(cwmp.url, connUrl); 对cwmp.url进行赋值
.... 对 cwmp的parameter进行赋值。
8. int cwmpInitAfterWanUp() good 在WanUp后为cwmp的parameter赋值。
(1) url_parse( cwmp.url, cwmp.host, &cwmp.port, cwmp.http.page);
(2) 对cwmp相关parameter进行赋值,
return CWMP_OK;
9. void mac_to_string(char *macstring, char *objstring) 这个函数没有用到?
将macstring中的':' 去掉, 拷贝到objstring中。
10.