easycwmp解讀(1.2.0)-easycwmp腳本模塊分析-概述

文件路徑:

源碼:ext/openwrt/scripts/
設備路徑:

/usr/sbin/easycwmp
/usr/share/easycwmp/functions/

easycwmp腳本模塊的文件說明:

源碼目錄 設備目錄 說明
ext/openwrt/scripts/easycwmp.sh /usr/bin/easycwmp 1.命令的入參處理 2.與系統接口的定義(uci,log目錄)
ext/openwrt/scripts/functions/common/common /usr/share/easycwmp/functions/common 1.操作方法的具體實現2.Json相關函數3.其他函數封裝
ext/openwrt/scripts/functions/…/management_server /usr/share/easycwmp/functions/management_server 數據模型ManagementServer相關節點定義,GET和SET方法實現
ext/openwrt/scripts/functions/…/device_info /usr/share/easycwmp/functions/device_info 數據模型DeviceInfo相關節點定義,GET和SET方法實現
ext/openwrt/scripts/functions/…/lan_device /usr/share/easycwmp/functions/lan_device 數據模型LANDevice相關節點定義,GET和SET方法實現

其他文件都是,相應的數據模型定義,ET和SET方法實現;如果要添加數據模型,添加相應的腳步即可。

easycwmp腳本模塊的主要功能:

  1. 實現數據模型的構建
  2. 實現TR069的操作方法
get GET節點方法
set SET節點方法
apply 未知-後期補充
add 添加節點
delete 刪除節點
download 下載操作
upload 上傳操作
factory_reset 恢復出廠操作
reboot 重啓操作
inform inform操作
  1. 輸出Json格式的數據

GET操作-ALL:

easycwmp get
{ "parameter": "InternetGatewayDevice.DeviceInfo.SpecVersion", "value": "1.0" }
{ "parameter": "InternetGatewayDevice.DeviceInfo.ProvisioningCode", "value": "" }
{ "parameter": "InternetGatewayDevice.DeviceInfo.Manufacturer", "value": "easycwmp" }
{ "parameter": "InternetGatewayDevice.DeviceInfo.ManufacturerOUI", "value": "FFFFFF" }
{ "parameter": "InternetGatewayDevice.DeviceInfo.ProductClass", "value": "easycwmp" }
{ "parameter": "InternetGatewayDevice.DeviceInfo.SerialNumber", "value": "FFFFFF123456" }
{ "parameter": "InternetGatewayDevice.DeviceInfo.HardwareVersion", "value": "example_hw_version" }
{ "parameter": "InternetGatewayDevice.DeviceInfo.SoftwareVersion", "value": "example_sw_version" }
{ "parameter": "InternetGatewayDevice.DeviceInfo.UpTime", "value": "152", "type": "xsd:unsignedInt" }
{ "parameter": "InternetGatewayDevice.DeviceInfo.DeviceLog", "value": "" }
{ "parameter": "InternetGatewayDevice.DeviceInfo.MemoryStatus.Total", "value": "3934328" }
{ "parameter": "InternetGatewayDevice.DeviceInfo.MemoryStatus.Free", "value": "3899292" }
{ "parameter": "InternetGatewayDevice.IPPingDiagnostics.DiagnosticsState", "value": "None" }
{ "parameter": "InternetGatewayDevice.IPPingDiagnostics.Host", "value": "" }
{ "parameter": "InternetGatewayDevice.IPPingDiagnostics.NumberOfRepetitions", "value": "3", "type": "xsd:unsignedInt" }
{ "parameter": "InternetGatewayDevice.IPPingDiagnostics.Timeout", "value": "1000", "type": "xsd:unsignedInt" }
{ "parameter": "InternetGatewayDevice.IPPingDiagnostics.DataBlockSize", "value": "64", "type": "xsd:unsignedInt" }
{ "parameter": "InternetGatewayDevice.IPPingDiagnostics.SuccessCount", "value": "0", "type": "xsd:unsignedInt" }
{ "parameter": "InternetGatewayDevice.IPPingDiagnostics.FailureCount", "value": "0", "type": "xsd:unsignedInt" }
{ "parameter": "InternetGatewayDevice.IPPingDiagnostics.AverageResponseTime", "value": "0", "type": "xsd:unsignedInt" }
{ "parameter": "InternetGatewayDevice.IPPingDiagnostics.MinimumResponseTime", "value": "0", "type": "xsd:unsignedInt" }
{ "parameter": "InternetGatewayDevice.IPPingDiagnostics.MaximumResponseTime", "value": "0", "type": "xsd:unsignedInt" }
{ "parameter": "InternetGatewayDevice.ManagementServer.URL", "value": "http:\/\/192.168.1.110:8080\/openacs\/acs" }
{ "parameter": "InternetGatewayDevice.ManagementServer.Username", "value": "easycwmp" }
{ "parameter": "InternetGatewayDevice.ManagementServer.Password", "value": "" }
{ "parameter": "InternetGatewayDevice.ManagementServer.PeriodicInformEnable", "value": "1", "type": "xsd:boolean" }
{ "parameter": "InternetGatewayDevice.ManagementServer.PeriodicInformInterval", "value": "100", "type": "xsd:unsignedInt" }
{ "parameter": "InternetGatewayDevice.ManagementServer.PeriodicInformTime", "value": "0001-01-01T00:00:00Z", "type": "xsd:dateTime" }
{ "parameter": "InternetGatewayDevice.ManagementServer.ConnectionRequestURL", "value": "" }
{ "parameter": "InternetGatewayDevice.ManagementServer.ConnectionRequestUsername", "value": "easycwmp" }
{ "parameter": "InternetGatewayDevice.ManagementServer.ConnectionRequestPassword", "value": "" }
{ "parameter": "InternetGatewayDevice.ManagementServer.ParameterKey", "value": "" }
{ "parameter": "InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ConnectionStatus", "value": "Connected" }
{ "parameter": "InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress", "value": "" }
{ "parameter": "InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.MACAddress", "value": "" }
{ "parameter": "InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Enable", "value": "", "type": "xsd:boolean" }
{ "parameter": "InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Username", "value": "" }
{ "parameter": "InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Password", "value": "" }

GET操作-ONE:

# easycwmp get InternetGatewayDevice.DeviceInfo.MemoryStatus.Total
{ "parameter": "InternetGatewayDevice.DeviceInfo.MemoryStatus.Total", "value": "3934328" }

GET操作-ERROR:

# easycwmp get InternetGatewayDevice.DeviceInfo.MemoryStatus.Tot
{ "parameter": "InternetGatewayDevice.DeviceInfo.MemoryStatus.Tot", "fault_code": "9005" }

SET操作

# easycwmp set value InternetGatewayDevice.ManagementServer.PeriodicInformInterval 1002
# easycwmp get value InternetGatewayDevice.ManagementServer.PeriodicInformInterval 
{ "parameter": "InternetGatewayDevice.ManagementServer.PeriodicInformInterval", "value": "1002", "type": "xsd:unsignedInt" }

set操作時,源碼中有一個bug,導致無法設置成功
common文件 line 686

[ "$permission" != "1" -o -z "$setcmd"   ] && exit $E_NON_WRITABLE_PARAMETER

替換成

[ "$permission" != "1" -o -z `$setcmd $val`  ] && exit $E_NON_WRITABLE_PARAMETER

其他操作後期補充

easycwmp腳本模塊與其他模塊的接口:

腳本模塊一方面通過系統調用,完成與系統的連接;另一方面,通過輸出固定的格式(Json)的數據,與C語言實現TR069協議的其他模塊進行通信,詳細通信細節後期補充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章