| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 |
- //
- // ConfigControllerBase.mm
- // XMFamily
- //
- // Created by hzjf on 14-8-27.
- // Copyright (c) 2014年 hzjf. All rights reserved.
- //
- #import "ConfigControllerBase.h"
- #import "FunSDK/FunSDK.h"
- #import "NSString+Extention.h"
- #import "Header.h"
- @implementation CfgParam
- -(instancetype)init
- {
- id obj = [super init];
- _name = @"Unknow";
- _devId = @"InvalidId";
- _isGet = YES;
- _isSet = YES;
- _isOnce = NO;
- _isSaveLocal = NO;
- _channel = -1;
- _cfg = NULL;
- _autoUJ = nil;
- _cmdGet = 0;
- _cmdSet = 0;
- return obj;
- }
- -(instancetype)initWithName:(NSString *)name andDevId:(NSString *)devId andChannel:(NSInteger)channel andConfig:(JObject *)cfg andOnce:(BOOL)once andSaveLocal:(BOOL)savalocal
- {
- id obj = [self init];
- _name = name;
- _devId = devId;
- _channel = channel;
- _cfg = cfg;
- _isOnce = once;
- return obj;
- }
- +(instancetype)initWithName:(NSString *)devId andConfig:(JObject *)cfg andChannel:(NSInteger)channel andCfgType:(int)nCfgType{
- CfgParam *obj = [[CfgParam alloc] init];
- obj.name= [NSString stringWithUTF8String:cfg->Name()] ;
- obj.devId = devId;
- obj.channel = channel;
- obj.cfg = cfg;
- obj.isGet = (nCfgType & 0x1) != 0;
- obj.isSet = (nCfgType & 0x2) != 0;
- return obj;
- }
- -(void)setAutoUJ:(NSMutableArray *)autoUJ{
- _autoUJ = autoUJ;
- }
- -(int)UpdateToUI{
- if (_autoUJ == nil) {
- return -1;
- }
- for (int i = 0; i < [_autoUJ count]; i++) {
- UJObject *pUJ = (UJObject *)_autoUJ[i];
- if (pUJ != nil) {
- [pUJ UpdateToUI];
- }
- }
- return 0;
- }
- -(int)UpdateToJson{
- if (_autoUJ == nil) {
- return -1;
- }
- for (int i = 0; i < [_autoUJ count]; i++) {
- UJObject *pUJ = (UJObject *)_autoUJ[i];
- if (pUJ != nil) {
- [pUJ UpdateToJson];
- }
- }
- return 0;
- }
- @end
- @implementation UJObject
- - (instancetype)init {
- id obj = [super init];
- _pJson = NULL;
- _pUI = nil;
- return obj;
- }
- +(instancetype)init:(NSObject *)ui JsonObj:(JObject *)json intValueType:(int)type{
- return [UJObject init:ui UIType:EUI_Unkown JsonObj:json type:type];
- }
- +(instancetype)init:(NSObject *)ui JsonObj:(JObject *)json{
- return [UJObject init:ui UIType:EUI_Unkown JsonObj:json type:0];
- }
- @end
- @implementation ConfigControllerBase
- - (instancetype)init{
- _cfgs = [[NSMutableDictionary alloc] initWithCapacity:0];
- _cmds = [[NSMutableDictionary alloc] initWithCapacity:0];
- return [super init];
- }
- - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
- _cfgs = [[NSMutableDictionary alloc] initWithCapacity:0];
- _cmds = [[NSMutableDictionary alloc] initWithCapacity:0];
- return [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- _commboxArray = [[NSMutableArray alloc] initWithCapacity:0];
- }
- - (void)OnFunSDKResult:(NSNumber *) pParam{
- NSInteger nAddr = [pParam integerValue];
- MsgContent *msg = (MsgContent *)nAddr;
- //json回调
- if ( EMSG_DEV_GET_CONFIG_JSON == msg->id || EMSG_DEV_SET_CONFIG_JSON == msg->id ) {
-
- NSString* name = [NSString stringWithUTF8String:msg->szStr];
- CfgParam* param = _cfgs[name];
- param.errorCode = msg->param1;
- param.typeInfo = msg->param3;
- param.param2 = msg->param2;
-
- if (EMSG_DEV_GET_CONFIG_JSON == msg->id){
- if ( param.errorCode >= 0 ) {
- if ( param.cfg ) {
- NSString* strName;
- if ( param.channel >= 0 ) {
- strName = [NSString stringWithFormat:@"%@.[%ld]", name, (long)param.channel];
- }
- else{
- strName = name;
- }
- if (msg->pObject == nil) {
- return;
- }
- param.cfgTmp = [NSString stringWithUTF8String:msg->pObject];
- if (param.cfgTmp == nil) {
- NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
- NSData *data = [NSData dataWithBytes:msg->pObject length:strlen(msg->pObject)];
- param.cfgTmp = [[NSString alloc] initWithData:data encoding:enc];
- }
- NSLog(@"msg->pObject =%s",msg->pObject);
- NSString *tmpStr = [param.cfgTmp stringByReplacingOccurrencesOfString:strName withString:param.name];
- param.cfgTmp = tmpStr;
- int nRet = param.cfg->Parse([param.cfgTmp UTF8String]);
- NSLog(@"Parse result[%d]", nRet);
- }
- }
- [self OnGetConfig:param];
- }else if ( EMSG_DEV_SET_CONFIG_JSON == msg->id) {
-
- [self OnSetConfig:param];
- }
- //cmd回调
- }else if (msg->id == EMSG_DEV_CMD_EN) {
-
- NSString* name = [NSString stringWithUTF8String:msg->szStr];
- CfgParam* param = _cmds[name];
- param.errorCode = msg->param1;
- param.typeInfo = msg->param3;
- param.param2 = msg->param2;
-
- if (param.isGet == YES){
- if ( param.errorCode >= 0 ) {
- if ( param.cfg ) {
- NSString* strName;
- if ( param.channel >= 0 ) {
- strName= name;
- //strName = [NSString stringWithFormat:@"%@.[%ld]", name, (long)param.channel];
- }
- else{
- strName = name;
- }
- if (msg->pObject == nil) {
- return;
- }
- param.cfgTmp = [NSString stringWithUTF8String:msg->pObject];
- if (param.cfgTmp == nil) {
- NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
- NSData *data = [NSData dataWithBytes:msg->pObject length:strlen(msg->pObject)];
- param.cfgTmp = [[NSString alloc] initWithData:data encoding:enc];
- }
- NSLog(@"msg->pObject =%s",msg->pObject);
- NSString *tmpStr = [param.cfgTmp stringByReplacingOccurrencesOfString:strName withString:param.name];
- param.cfgTmp = tmpStr;
- int nRet = param.cfg->Parse([param.cfgTmp UTF8String]);
- NSLog(@"Parse result[%d]", nRet);
- }
- }
- [self OnGetConfig:param];
- }else if ( param.isSet == YES) {
- [self OnSetConfig:param];
- }
- }
- }
- //添加json Config
- - (void)AddConfig:(CfgParam *)param{
- if ( param ) {
- if ([[_cfgs allKeys] containsObject:param.name]) {
- _cfgs[param.name] = param;
- return;
- }
- _cfgs[param.name] = param;
-
- if (param.isSet) {
- _nSetCfgCount++;
- }
- if (param.isGet) {
- _nGetCfgCount++;
- }
- }
- }
- //添加cmdConfig
- - (void)AddCmdfig:(CfgParam *)param{
- if ( param ) {
- if ([[_cmds allKeys] containsObject:param.name]) {
- _cmds[param.name] = param;
- return;
- }
- _cmds[param.name] = param;
- }
- }
- //删除json
- - (void)RemoveConfig:(NSString *)name{
- [_cfgs removeObjectForKey:name];
- }
- //删除cmd
- - (void)RemoveCmdfig:(NSString *)name {
- [_cmds removeObjectForKey:name];
- }
- //删除json
- - (void)RemoveAllConfig{
-
- }
- //删除cmd
- - (void)RemoveAllCmdfig {
- [_cmds removeAllObjects];
- }
- //返回json对象
- - (CfgParam *)GetConfigParam:(NSString *)name{
- return [_cfgs objectForKey:name];
- }
- //返回cmd对象
- - (CfgParam *)GetCmdfigParam:(NSString *)name {
- return [_cmds objectForKey:name];
- }
- //获取所有json配置,一般界面第一次出现时需要调用。其他需要调用的地方(更新配置时)调用下
- - (int)GetConfig{
- for( NSString* name in _cfgs ){
- [self GetConfig:name];
- }
- return 0;
- }
- //获取所有cmd配置,一般界面第一次出现时需要调用。其他需要调用的地方(更新配置时)调用下
- - (int)GetCmdfig{
- for( NSString* name in _cmds ){
- [self GetCmdfig:name];
- }
- return 0;
- }
- //获取json配置
- - (int)GetConfig:(NSString *)name{
- CfgParam* param = _cfgs[name];
- if ( param && param.isGet) {
- FUN_DevGetConfig_Json(SELF, SZSTR(param.devId), SZSTR(param.name), 0, (int)param.channel);
- }
- return 0;
- }
- //获取cmd配置
- - (int)GetCmdfig:(NSString *)name{
- CfgParam* param = _cmds[name];
- if ( param && param.isGet) {
- if (param.cmdString == nil) {
- FUN_DevCmdGeneral(SELF, SZSTR(param.devId), (int)param.cmdGet, SZSTR(param.name), 0, 5000, NULL, 0, -1, 0);
- }else{
- char * cmd = (char *)[param.cmdString UTF8String];
- FUN_DevCmdGeneral(SELF, SZSTR(param.devId), (int)param.cmdGet, SZSTR(param.name), 0, 5000, cmd, (int)strlen(cmd) + 1, -1, 0);
- }
- }
- return 0;
- }
- //保存所有json配置
- - (int)SetConfig{
- for( NSString* name in _cfgs ){
- [self SetConfig:name];
- }
- return 0;
- }
- //保存所有cmd配置
- - (int)SetCmdfig{
- for( NSString* name in _cmds ){
- [self SetCmdfig:name];
- }
- return 0;
- }
- //保存所有json配置
- - (int)SetConfig:(NSString *)name{
- CfgParam* param = _cfgs[name];
- if (param == nil || (param.isGet && param.cfgTmp == nil)) {
- return 0;
- }
- if (param && param.isSet ) {
- [param UpdateToJson];
- const char * pConfig = param.cfg->ToString();
- if ((strlen(pConfig) > 0) && (!param.isGet || strcmp(pConfig, [param.cfgTmp UTF8String]))) {
- //配置改变了才需要设置
- FUN_DevSetConfig_Json(SELF, SZSTR(param.devId), SZSTR(param.name), pConfig, (int)strlen(pConfig), (int)param.channel);
- }
- }
- return 0;
- }
- //保存所有cmd配置
- - (int)SetCmdfig:(NSString *)name{
- CfgParam* param = _cmds[name];
- if (param == nil || (param.isGet && param.cfgTmp == nil)) {
- return 0;
- }
- if (param && param.isSet ) {
- [param UpdateToJson];
- const char * pConfig = param.cfg->ToString();
- if ((strlen(pConfig) > 0) && (!param.isGet || strcmp(pConfig, [param.cfgTmp UTF8String]))) {
- //配置改变了才需要设置
- if (param.cmdString == nil) {
- FUN_DevCmdGeneral(SELF, SZSTR(param.devId), (int)param.cmdGet, SZSTR(param.name), 0, 5000, NULL, 0, -1, 0);
- }else{
- char * cmd = (char *)[param.cmdString UTF8String];
- FUN_DevCmdGeneral(SELF, SZSTR(param.devId), (int)param.cmdGet, SZSTR(param.name), 0, 5000, cmd, (int)strlen(cmd) + 1, -1, 0);
- }
- }
- }
- return 0;
- }
- //保存json配置
- - (int)SetConfig:(NSString *)name timeOut:(NSInteger)time {
- CfgParam* param = _cfgs[name];
- if (param == nil || (param.isGet && param.cfgTmp == nil)) {
- return 0;
- }
- if (param && param.isSet ) {
- [param UpdateToJson];
- const char * pConfig = param.cfg->ToString();
- if ((strlen(pConfig) > 0) && (!param.isGet || strcmp(pConfig, [param.cfgTmp UTF8String]))) {
- //配置改变了才需要设置
- FUN_DevSetConfig_Json(SELF, SZSTR(param.devId), SZSTR(param.name), pConfig, (int)strlen(pConfig), (int)param.channel, (int)time);
- }
- }
- return 0;
- }
- //保存cmd配置
- - (int)SetCmdfig:(NSString *)name timeOut:(NSInteger)time {
- CfgParam* param = _cmds[name];
- if (param == nil || (param.isGet && param.cfgTmp == nil)) {
- return 0;
- }
- if (param && param.isSet ) {
- [param UpdateToJson];
- const char * pConfig = param.cfg->ToString();
- if ((strlen(pConfig) > 0) && (!param.isGet || strcmp(pConfig, [param.cfgTmp UTF8String]))) {
- //配置改变了才需要设置
- if (param.cmdString == nil) {
- FUN_DevCmdGeneral(SELF, SZSTR(param.devId), (int)param.cmdGet, SZSTR(param.name), 0, (int)time, NULL, 0, -1, 0);
- }else{
- char * cmd = (char *)[param.cmdString UTF8String];
- FUN_DevCmdGeneral(SELF, SZSTR(param.devId), (int)param.cmdGet, SZSTR(param.name), 0, (int)time, cmd, (int)strlen(cmd) + 1, -1, 0);
- }
- }
- }
- return 0;
- }
- //获取到一个配置
- //errorCode>=0 为成功 <0 为错误码, 此时errorInfo为错误信息
- //this param is readonly !!
- - (void)OnGetConfig:(CfgParam *)param {
- if (param.autoUJ == nil && param.errorCode > 0) {
- [self OnInitAutoUI:param];
- }
- [param UpdateToUI];
- if (param.errorCode <0) {
- }
- }
- - (void)OnInitAutoUI:(CfgParam *)param {
- }
- //完成设置一个配置
- //errorCode>=0 为成功 <0 为错误码, 此时errorInfo为错误信息
- //this param is readonly !!
- - (void)OnSetConfig:(CfgParam *)param {
- [param UpdateToJson];
- }
- - (id)CMD_Result:(NSNumber *) pParam Name:(NSString*)name {
- NSInteger nAddr = [pParam integerValue];
- MsgContent *msg = (MsgContent *)nAddr;
- //1、先取出数据
- char *result = (char *)msg->pObject;
- if (result == nil || strlen(result) == 0) {
- return nil;
- }
- // 2.0 将c的jason字符串转化为NSData
- NSData *resultData = [NSData dataWithBytes:result length:strlen(result)];
- if (resultData == nil) {
- return nil;
- }
- // 3.0 将NSData转化为字典
- NSError *error;
- NSMutableDictionary *socketInfoDic = (NSMutableDictionary*)[NSJSONSerialization JSONObjectWithData:resultData options:NSJSONReadingMutableLeaves error:&error];
-
- return [socketInfoDic objectForKey:name];
- }
- @end
|