# -*- coding: utf-8 -*-

{
#--------------------------------------------------------
    'AT+RTUPINCNF':
	{
		'name':'AT+RTUPINCNF',
		'explain':u'RTU管脚配置',
		'param_list_count':20,
		'index name':u'管脚号',
		'split_string':', ',
		'available_fields_value_range':
		[
		    {'check_value':[0, 1, 2, 3, 4, 5, 6, 7], 'field_index':0, 'field_value_range':[0, 1, 3]},
		    {'check_value':[8, 9, 10, 11, 12, 13], 'field_index':0, 'field_value_range':[0, 5]},
		    {'check_value':[14, 15, 16, 17, 18, 19], 'field_index':0, 'field_value_range':[0, 6]},
		],
		'fields':
		[
		    ## 0
			{
				'name':'pin type',
				'explain':u'管脚类型',
				'type':'int list',
				'default':0,
				'default_values':
				[
				    1, 1, 1, 1, 1, 1, 1, 1,
				    5, 5, 5, 5, 5, 5,
				    6, 6, 6, 6, 6, 6,
				],
				'set_prefix':'-t',
				'ignore_fields_value':[None, '', 0],
				'list_value':
				[
					{'value':0, 'desciption':u': 无效管脚'},
					{'value':1, 'desciption':u': 单端电压管脚'},
					{'value':3, 'desciption':u': 单端电流管脚'},
					{'value':5, 'desciption':u': LOGIC输入管脚'},
					{'value':6, 'desciption':u': LOGIC输出管脚'},
				],
                'available_fields_value_range':
                [
                    {'check_value':[1, 3], 'field_index':1, 'field_value_range':[0, 1, 2, 3]},
                    {'check_value':[5], 'field_index':1, 'field_value_range':[0, 6, 7, 8]},
                    {'check_value':[6], 'field_index':1, 'field_value_range':[0]},
                ],
                'valid_fields_check':
                [
                    {'check_value':[0], 'field_index':[]},
                    {'check_value':[1, 3], 'field_index':[1, 3, 2]},
                    {'check_value':[5], 'field_index':[1, 4]},
                    {'check_value':[6], 'field_index':[1, 5]},
                ],
			},
			## 1
			{
				'name':'alarm type',
				'explain':u'报警类型',
				'type':'int list',
				'default':0,
				'set_prefix':'-a',
				'list_value':
				[
					{'value':0, 'desciption':u': 不报警'},
					{'value':1, 'desciption':u': 过压或过流报警'},
					{'value':2, 'desciption':u': 欠压或欠流报警'},
					{'value':3, 'desciption':u': 过压欠压或过流欠流都报警'},
					{'value':6, 'desciption':u': 高电平报警'},
					{'value':7, 'desciption':u': 低电平报警'},
					{'value':8, 'desciption':u': 电平变化报警'},
				],
                'valid_fields_set_check':
                [
                    {'check_value':[0], 'field_index':[4, 5]},
                    {'check_value':[1], 'field_index':[2, 4, 5]},
                    {'check_value':[2], 'field_index':[3, 4, 5]},
                    {'check_value':[3], 'field_index':[2, 3, 4, 5]},
                    {'check_value':[6, 7, 8], 'field_index':[4, 5]},
                ],
			},
			## 2
			{
				'name':'high level',
				'explain':u'上限值',
				'type':'int',
				'default':0,
				'min_val':-9999999,
				'max_val':9999999,
				'set_prefix':'-u',
			},
			## 3
			{
				'name':'low level',
				'explain':u'下限值',
				'type':'int',
				'default':0,
				'min_val':-9999999,
				'max_val':9999999,
				'set_prefix':'-l',
			},
			## 4
			{
				'name':'logic input invert',
				'explain':u'逻辑输入反转',
				'type':'int list',
				'default':0,
				'set_prefix':'-r',
				'list_value':
				[
					{'value':0, 'desciption':u': 否'},
					{'value':1, 'desciption':u': 是'},
				],
			},
			## 5
			{
				'name':'logic output level',
				'explain':u'逻辑输出初值',
				'type':'int list',
				'default':2,
				'set_prefix':'-i',
				'list_value':
				[
					{'value':0, 'desciption':u': 0'},
					{'value':1, 'desciption':u': 1'},
					{'value':2, 'desciption':u': 三态'},
				],
			},
		],
	},
#--------------------------------------------------------
    'AT+RTUEXTMB':
	{
		'name':'AT+RTUEXTMB',
		'explain':u'外部MODBUS设备读取指令',
		'param_list_count':15,
		'split_string':' ',
		'pre_set_at_command':'AT+RTUEXTMB=c',
        'list_value':
        [
            {'value':0, 'desciption':': M0'},
            {'value':1, 'desciption':': M1'},
            {'value':2, 'desciption':': M2'},
            {'value':3, 'desciption':': M3'},
            {'value':4, 'desciption':': M4'},
            {'value':5, 'desciption':': M5'},
            {'value':6, 'desciption':': M6'},
            {'value':7, 'desciption':': M7'},
            {'value':8, 'desciption':': M8'},
            {'value':9, 'desciption':': M9'},
            {'value':10, 'desciption':': M10'},
            {'value':11, 'desciption':': M11'},
            {'value':12, 'desciption':': M12'},
            {'value':13, 'desciption':': M13'},
            {'value':14, 'desciption':': M14'},
        ],
		'fields':
		[
			{
				'name':'modbus command',
				'explain':u'MODBUS指令',
				'type':'assemble_fields',
				##'assemble_type':'hex data',
				'default':'',
		        'ignore_all_value':[None, '', 0, '000000000000'],
				'child_fields':
				[
				    {
                        'name':'modbus device id',
                        'explain':u'设备地址',
                        'type':'hex data',
                        'default':'',
                        'start_pos':0,
                        'field_len':2,
                        'ignore_all_value':[None, '', 0],
				    },
				    {
                        'name':'modbus command',
                        'explain':u'功能码',
                        'type':'string list',
                        'default':'',
                        'start_pos':2,
                        'field_len':2,
                        'ignore_all_value':[None, '', 0, '00'],
                        'list_value':
                        [
                            {'value':'03', 'desciption':u': 读取'},
                            {'value':'04', 'desciption':u': 读取'},
                            {'value':'A5', 'desciption':u': 延时'},
                            {'value':'', 'desciption':u': 无'},
                            {'value':'00', 'desciption':u': 无'},
                        ],
                        'band_fields_value':
                        {
                            'A5':
                            [
                                {'field_index':0, 'value':'00'},
                                {'field_index':2, 'value':'0100'},
                            ],
                            '':
                            [
                                {'field_index':0, 'value':'00'},
                                {'field_index':2, 'value':'0000'},
                                {'field_index':3, 'value':'0000'},
                            ],
                            '00':
                            [
                                {'field_index':0, 'value':'00'},
                                {'field_index':2, 'value':'0000'},
                                {'field_index':3, 'value':'0000'},
                            ],
                        },
				    },
				    {
                        'name':'modbus address',
                        'explain':u'起始地址',
                        'type':'hex data',
                        'default':'',
                        'start_pos':4,
                        'field_len':4,
                        'ignore_all_value':[None, '', 0],
				    },
				    {
                        'name':'register count',
                        'explain':u'数据长度',
                        'type':'hex data',
                        'default':'',
                        'start_pos':8,
                        'field_len':4,
                        'ignore_all_value':[None, '', 0],
                        'min_val':'0001',
				    },
				    ##{
                    ##    'name':'modbus crc',
                    ##    'explain':u'CRC',
                    ##    'type':'modbus crc',
                    ##    'default':'',
                    ##    'start_pos':12,
                    ##    'field_len':4,
				    ##},
				],
			},
		],
	},
#--------------------------------------------------------
    'AT+RTUEXUC':
	{
		'name':'AT+RTUEXUC',
		'explain':u'外部MODBUS设备串口配置',
		'param_list_count':1,
		'split_string':' ',
		'head_string':'UART: ',
		'fields':
		[
			{
				'name':'bandrate',
				'explain':u'波特率',
				'type':'int list',
				'default':9600,
				'set_prefix':'-b',
				'list_value':
				[
					{'value':1200, 'desciption':u''},
					{'value':2400, 'desciption':u''},
					{'value':4800, 'desciption':u''},
					{'value':9600, 'desciption':u''},
					{'value':19200, 'desciption':u''},
					{'value':38400, 'desciption':u''},
					{'value':115200, 'desciption':u''},
				],
			},
			{
				'name':'uart config',
				'explain':u'串口配置',
				'type':'assemble_fields',
				##'assemble_type':'hex data',
				'default':'810',
				'set_prefix':'-u',
				'child_fields':
				[
				    {
                        'name':'bit count',
                        'explain':u'数据位',
                        'type':'string list',
                        'default':'8',
                        'start_pos':0,
                        'field_len':1,
                        'list_value':
                        [
                            {'value':'8', 'desciption':u''},
                            {'value':'7', 'desciption':u''},
                            {'value':'6', 'desciption':u''},
                            {'value':'5', 'desciption':u''},
                        ],
				    },
				    {
                        'name':'stop bit',
                        'explain':u'停止位',
                        'type':'string list',
                        'default':'1',
                        'start_pos':1,
                        'field_len':1,
                        'list_value':
                        [
                            {'value':'1', 'desciption':u': 1个停止位'},
                            {'value':'2', 'desciption':u': 2个停止位'},
                            {'value':'3', 'desciption':u': 1.5个停止位'},
                        ],
				    },
				    {
                        'name':'verify bit',
                        'explain':u'校验位',
                        'type':'string list',
                        'default':'0',
                        'start_pos':2,
                        'field_len':1,
                        'list_value':
                        [
                            {'value':'0', 'desciption':u': 无校验'},
                            {'value':'1', 'desciption':u': 奇校验'},
                            {'value':'2', 'desciption':u': 偶校验'},
                            {'value':'3', 'desciption':u': 空校验'},
                        ],
				    },
				],
			},
		],
	},
#--------------------------------------------------------
    'AT+RTUCONF':
	{
		'name':'AT+RTUCONF',
		'explain':u'RTU采样参数',
		'param_list_count':1,
		'fields':
		[
			{
				'name':'sampling interval',
				'explain':u'采样时间间隔',
				'type':'int',
				'default':10,
				'min_val':1,
				'max_val':86400,
				'set_prefix':'-s',
				'suffix':u' 秒',
			},
			{
				'name':'report interval',
				'explain':u'上报时间间隔',
				'type':'int',
				'default':10,
				'min_val':0,
				'max_val':86400,
				'set_prefix':'-u',
				'suffix':u' 秒',
			},
			{
				'name':'save interval',
				'explain':u'保存时间间隔',
				'type':'int',
				'default':10,
				'min_val':0,
				'max_val':86400,
				'set_prefix':'-r',
				'suffix':u' 秒',
			},
			{
				'name':'hibernate mode',
				'explain':u'是否省电模式',
				'type':'int list',
				'default':0,
				'set_prefix':'-h',
				'list_value':
				[
					{'value':0, 'desciption':u': 正常模式'},
					{'value':3, 'desciption':u': 省电模式'},
				],
			},
		],
	},
#--------------------------------------------------------
    'AT+RTURECORD':
	{
		'name':'AT+RTURECORD',
		'explain':u'读取最新记录',
		'param_list_count':0,
		'testonly':True,
		'fields':[],
	},
#--------------------------------------------------------
    'AT+RTUTIME':
	{
		'name':'AT+RTUTIME',
		'explain':u'设置RTU时间，输入%LOCALTIME%设置当前时间',
		'param_list_count':1,
        'substitutable':True,
        'timeformat':'%Y%m%d%H%M%S',
        'read_paser_ignore':True,
        'store_ignore':True,
		'fields':
		[
			{
				'name':'RTU TIME',
				'explain':u'RTU时间',
				'type':'string',
				'default':'%LOCALTIME%',
				'ignore_field_value':[None, '', 0],
				'maxLength':14,
				'clear_after_write':True,
			},
		],
	},
#--------------------------------------------------------
    'AT+RTUCLR':
	{
		'name':'AT+RTUCLR',
		'explain':u'清空RTU存储数据',
		'param_list_count':0,
		'testonly':True,
		'fields':[],
		'timeout':300,
	},
#--------------------------------------------------------
    'AT+RTUSETOUT':
	{
		'name':'AT+RTUSETOUT',
		'explain':u'置高或置低输出管脚',
		'param_list_count':1,
		'testonly':True,
		'fields':
		[
			{
				'name':'set or reset',
				'explain':u'置高或置低',
				'type':'string list',
				'default':'s',
				'list_value':
				[
					{'value':'s', 'desciption':u': 置高'},
					{'value':'c', 'desciption':u': 置低'},
				],
			},
			{
				'name':'pin number',
				'explain':u'管脚号',
				'type':'int list',
				'default':14,
				'list_value':
				[
					{'value':14, 'desciption':u''},
					{'value':15, 'desciption':u''},
					{'value':16, 'desciption':u''},
					{'value':17, 'desciption':u''},
					{'value':18, 'desciption':u''},
					{'value':19, 'desciption':u''},
				],
			},
		],
	},
#--------------------------------------------------------
    'AT+RTUCALI':
	{
		'name':'AT+RTUCALI',
		'explain':u'AD管脚校准信息',
		'param_list_count':8,
		'index name':u'管脚号',
		'fields':
		[
			{
				'name':'slope',
				'explain':u'斜率',
				'type':'int',
				'default':0,
				'min_val':0,
				'max_val':999999,
				'ignore_all_value':[None, '', 0],
				'set_prefix':'-s',
			},
			{
				'name':'offset',
				'explain':u'偏移',
				'type':'int',
				'default':0,
				'min_val':0,
				'max_val':999999,
				'set_prefix':'-o',
			},
			{
				'name':'resistance',
				'explain':u'阻值',
				'type':'int',
				'default':250,
				'min_val':1,
				'max_val':999999,
				'ignore_all_value':[None, '', 0],
				'set_prefix':'-r',
			},
		],
	},
#--------------------------------------------------------
   'AT+STARTSTR':
	{
		'name':'AT+STARTSTR',
		'explain':u'启动信息',
		'param_list_count':1,
		'fields':
		[
			{
				'name':'start string',
				'explain':u'启动信息',
				'type':'gbk string',
				'default':'COMWAY RTU',
				'ignore_all_value':[None, '', 0],
				'maxLength':23,
			},
		],
	},
#--------------------------------------------------------
    'AT+RTUSVACK':
	{
		'name':'AT+RTUSVACK',
		'explain':u'上传服务器的数据是否需要响应',
		'param_list_count':1,
		'fields':
		[
			{
				'name':'upload flag',
				'explain':u'是否响应',
				'type':'int list',
				'default':0,
				'list_value':
				[
					{'value':0, 'desciption':u': 否'},
					{'value':1, 'desciption':u': 是'},
				],
			},
		],
	},
#--------------------------------------------------------
    'AT+RTUPKMD':
	{
		'name':'AT+RTUPKMD',
		'explain':u'RTU报文格式',
		'param_list_count':1,
		'fields':
		[
			{
				'name':'packet mode',
				'explain':u'报文格式',
				'type':'int list',
				'default':0,
				'list_value':
				[
					{'value':0, 'desciption':u': 字符串格式'},
					{'value':1, 'desciption':u': ID+字符串格式'},
				],
			},
		],
	},
#--------------------------------------------------------
    'AT+QICSGP=1':
	{
		'name':'AT+QICSGP=1',
		'explain':u'4G模块APN设置',
		'standardAT':True,
		##'read_append':'?',
		'head_string':'+QICSGP: ',
		'param_list_count':1,
		'fields':
		[
			{
				'name':'context_type',
				'explain':u'协议类型',
				'type':'int string list',
				'default':'',
				'list_value':
				[
					{'value':'', 'desciption':u': 忽略'},
					{'value':'1', 'desciption':u': IPV4'},
				],
			},
			{
				'name':'APN',
				'explain':u'APN',
				'type':'string',
				'default':'',
			},
			{
				'name':'username',
				'explain':u'用户名',
				'type':'string',
				'default':'',
			},
			{
				'name':'password',
				'explain':u'密码',
				'type':'string',
				'default':'',
			},
			{
				'name':'authentication',
				'explain':u'认证类型',
				'type':'int string list',
				'default':'',
				'list_value':
				[
					{'value':'', 'desciption':u': 忽略'},
					{'value':'0', 'desciption':u': NONE'},
					{'value':'1', 'desciption':u': PAP'},
					{'value':'2', 'desciption':u': CHAP'},
					{'value':'3', 'desciption':u': PAP_OR_CHAP'},
				],
			},
		],
	},
#--------------------------------------------------------
    'AT+QCFG="slplocktimes"':
	{
		'name':'AT+QCFG="slplocktimes"',
		'explain':u'NB模块休眠延时',
		'standardAT':True,
		'head_string':'+QCFG: "slplocktimes",',
		'param_list_count':1,
		'fields':
		[
			{
				'name':'slplocktimes',
				'explain':u'延时',
				'type':'int string',
				'default':'2',
			},
		],
	},
#--------------------------------------------------------
    'AT+RESET':
	{
		'name':'AT+RESET',
		'explain':u'RTU重启',
		'param_list_count':0,
		'writeonly':True,
		'fields':[],
	},
#--------------------------------------------------------
    'AT+RTUSLLK':
	{
		'name':'AT+RTUSLLK',
		'explain':u'RTU休眠延时',
		'param_list_count':1,
		'fields':
		[
			{
				'name':'slplocktimes',
				'explain':u'延时',
				'type':'int',
				'default':0,
				'min_val':0,
				'max_val':999,
				'suffix':u' 秒',
			},
		],
	},
#--------------------------------------------------------
}