easycwmp解读(1.3.1)-添加自定的数据模型

TR069协议中规定,自定义的节点都是以"X"开头的,本文我们以添加"X_ATM_Server"节点为例。

节点设计

节点名称类型
节点名InternetGatewayDevice.X_ATM_Server.obj
子节点InternetGatewayDevice.X_ATM_Server.Enablexsd:boolean
子节点InternetGatewayDevice.X_ATM_Server.Statusxsd:String
子节点InternetGatewayDevice.X_ATM_Server.RunTimexsd:dateTime
子节点InternetGatewayDevice.X_ATM_Server.Intervalxsd:unsignedInt
子节点InternetGatewayDevice.X_ATM_Server.KeyWordxsd:String
子节点InternetGatewayDevice.X_ATM_Server.Versionxsd:String

节点定义实现

entry_execute_method_root_X_ATM_Server() {
        case "$1" in ""|"$DMROOT."|"$DMROOT.X_ATM_Server."*)
                common_execute_method_obj "$DMROOT.X_ATM_Server." "0"
                common_execute_method_param "$DMROOT.X_ATM_Server.Enable" "1" "$UCI_GET easycwmp.@atm[0].enable" "x_atm_server_set easycwmp.@atm[0].enable" "xsd:boolean"
                common_execute_method_param "$DMROOT.X_ATM_Server.Status" "0" "Running" "" "" ""
                common_execute_method_param "$DMROOT.X_ATM_Server.RunTime" "0" "$UCI_GET easycwmp.@atm[0].runtime" "" "xsd:dateTime"
                common_execute_method_param "$DMROOT.X_ATM_Server.Interval" "1" "$UCI_GET easycwmp.@atm[0].interval" "x_atm_server_set easycwmp.@atm[0].interval" "xsd:unsignedInt"
                common_execute_method_param "$DMROOT.X_ATM_Server.KeyWord" "0" "$UCI_GET easycwmp.@atm[0].keyword" "" "" "1"
                common_execute_method_param "$DMROOT.X_ATM_Server.Version" "0" "$UCI_GET easycwmp.@atm[0].version" "" "" "0"
        return 0;
        ;;
        esac
        return $E_INVALID_PARAMETER_NAME;
}

子节点的定义,实现就是调动common_execute_method_param 函数设置不同的参数,改函数的入参说明如下:

入参说明样例类型
$1节点名称InternetGatewayDevice.X_ATM_Server.Status字符串
$2权限permission00:只读R 1: 读写RW
$3GET方法$UCI_GET easycwmp.@atm[0].runtime函数
$4SET方法x_atm_server_set easycwmp.@atm[0].interval函数
$5数据类型xsd:unsignedInt数据类型表
$6inform上报00:不上报 1:上报

加入到表中

#节点加到根节点
prefix_list="$prefix_list $DMROOT.X_ATM_Server."
#节点加到 entry_execute_method_list 支持GET SET操作
entry_execute_method_list="$entry_execute_method_list entry_execute_method_root_X_ATM_Server"
# 如果有需要Inoform的节点则加入到 entry_execute_method_list_forcedinform
entry_execute_method_list_forcedinform="$entry_execute_method_list_forcedinform entry_execute_method_root_X_ATM_Server"

其他函数

x_atm_server_set() {
        local cfg=$1
        local val=$2
        echo "cfg:$cfg val:$val"
        $UCI_SET $cfg="$val"
        return 0
}

加入到软件包或者设备中

源码路径:ext/openwrt/scripts/functions/common/common
设备路径: /usr/share/easycwmp/functions/tr098/

测试

查看所有节点

# easycwmp get value InternetGatewayDevice.X_ATM_Server.
{ "parameter": "InternetGatewayDevice.X_ATM_Server.Enable", "value": "", "type": "xsd:boolean" }
{ "parameter": "InternetGatewayDevice.X_ATM_Server.Status", "value": "" }
{ "parameter": "InternetGatewayDevice.X_ATM_Server.RunTime", "value": "", "type": "xsd:dateTime" }
{ "parameter": "InternetGatewayDevice.X_ATM_Server.Interval", "value": "102", "type": "xsd:unsignedInt" }
{ "parameter": "InternetGatewayDevice.X_ATM_Server.KeyWord", "value": "" }
{ "parameter": "InternetGatewayDevice.X_ATM_Server.Version", "value": "" }

SET操作

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

全部源码

#!/bin/sh
#       DIY
#       Author: Guiyuan Duan <1092765650@com.cn>

#############################
#   My Define param         #
#############################

# 节点加到根节点
prefix_list="$prefix_list $DMROOT.X_ATM_Server."
# 节点加到 entry_execute_method_list 支持GET SET操作
entry_execute_method_list="$entry_execute_method_list entry_execute_method_root_X_ATM_Server"
# 如果有需要Inoform的节点则加入到 entry_execute_method_list_forcedinform
entry_execute_method_list_forcedinform="$entry_execute_method_list_forcedinform entry_execute_method_root_X_ATM_Server"

entry_execute_method_root_X_ATM_Server() {
        case "$1" in ""|"$DMROOT."|"$DMROOT.X_ATM_Server."*)
                common_execute_method_obj "$DMROOT.X_ATM_Server." "0"
                common_execute_method_param "$DMROOT.X_ATM_Server.Enable" "1" "$UCI_GET easycwmp.@atm[0].enable" "x_atm_server_set easycwmp.@atm[0].enable" "xsd:boolean"
                common_execute_method_param "$DMROOT.X_ATM_Server.Status" "0" "Running" "" "" ""
                common_execute_method_param "$DMROOT.X_ATM_Server.RunTime" "0" "$UCI_GET easycwmp.@atm[0].runtime" "" "xsd:dateTime"
                common_execute_method_param "$DMROOT.X_ATM_Server.Interval" "1" "$UCI_GET easycwmp.@atm[0].interval" "x_atm_server_set easycwmp.@atm[0].interval" "xsd:unsignedInt"
                common_execute_method_param "$DMROOT.X_ATM_Server.KeyWord" "0" "$UCI_GET easycwmp.@atm[0].keyword" "" "" "1"
                common_execute_method_param "$DMROOT.X_ATM_Server.Version" "0" "$UCI_GET easycwmp.@atm[0].version" "" "" "0"
        return 0;
        ;;
        esac
        return $E_INVALID_PARAMETER_NAME;
}

x_atm_server_set() {
        local cfg=$1
        local val=$2
        echo "cfg:$cfg val:$val"
        $UCI_SET $cfg="$val"
        return 0
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值