TimeSynConfig.mm 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. //
  2. // TimeSynConfig.m
  3. // FunSDKDemo
  4. //
  5. // Created by XM on 2018/11/10.
  6. // Copyright © 2018年 XM. All rights reserved.
  7. //
  8. #import "TimeSynConfig.h"
  9. #import "CommonConfig.h"
  10. #import "FunSDK/FunSDK.h"
  11. #import "System_TimeZone.h"
  12. #import "TimeQuery.h"
  13. #import "TimeSynDataSource.h"
  14. @interface TimeSynConfig ()
  15. {
  16. CommonConfig *common; //设备本地配置,获取夏令时,因为多个地方用到这个配置,单独放在一个类中
  17. System_TimeZone timeZone; // 时区
  18. TimeQuery *timeQ; //时间对象
  19. TimeSynDataSource *dataSource; //资源和功能支持类文件
  20. }
  21. @end
  22. @implementation TimeSynConfig
  23. #pragma mark - 获取设备夏令时、时间、时区
  24. - (void)getTimeZoneConfig {
  25. //初始化需要用到的两个头文件
  26. dataSource = [[TimeSynDataSource alloc] init];
  27. timeQ = [[TimeQuery alloc] init];
  28. [self getTimeRule];//获取设备夏令时配置
  29. [self gettimeZone];//获取设备时区
  30. [self getTime];//获取设备时间
  31. }
  32. - (void)getTimeRule { //获取夏令时
  33. common = [[CommonConfig alloc] init];
  34. [common getGeneralLocationConfig];
  35. }
  36. - (void)gettimeZone { //获取时区
  37. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  38. //通用配置,需要用到其中的视频制式参数
  39. [self AddConfig:[CfgParam initWithName:channel.deviceMac andConfig:&timeZone andChannel:-1 andCfgType:CFG_GET_SET]];
  40. //调用获取配置的命令
  41. [self GetConfig:NSSTR(timeZone.Name())];
  42. }
  43. - (void)getTime {
  44. //获取通道
  45. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  46. //cmd配置,获取设备时间
  47. FUN_DevCmdGeneral(self.MsgHandle, SZSTR(channel.deviceMac), 1452, SZSTR(TIMEQUERY), 0, 5000, NULL, 0, -1, 0);
  48. }
  49. #pragma mark - 保存设备夏令时、时区、时间
  50. - (void)setTimeSynConfig { //设置时间、时区、夏令时同步e
  51. //1、根据手机所在地规则设置设备夏令时开关
  52. [self setDSTRule];
  53. //2、根据手机时区设置设备时区
  54. [self setSystemTimeZone];
  55. //3、根据手机时间设置设备时间
  56. [self setSystemTime];
  57. }
  58. - (void)setDSTRule { //1、根据手机所在地规则设置设备夏令时开关
  59. NSArray *arrayBegin = [TimeSynDataSource getDayLightSavingBeginTime];
  60. NSArray *arrayEnd = [TimeSynDataSource getDayLightSavingEndTime];
  61. if ([arrayBegin.firstObject intValue] != 0) {
  62. //设置夏令时开
  63. [common setDSTRule:@"On"];
  64. //设置夏令时开始时间
  65. [common setmDSTStartYear:[arrayBegin[0] intValue]];
  66. [common setmDSTStartMonth:[arrayBegin[1] intValue]];
  67. [common setmDSTStartDay:[arrayBegin[2] intValue]];
  68. //设置夏令时结束时间
  69. [common setmDSTEndYear:[arrayEnd[0] intValue]];
  70. [common setmDSTEndMonth:[arrayEnd[1] intValue]];
  71. [common setmDSTEndDay:[arrayEnd[2] intValue]];
  72. }
  73. else{
  74. //设置夏令时关
  75. [common setDSTRule:@"Off"];
  76. }
  77. //保存配置
  78. [common setGeneralLocationConfig];
  79. }
  80. - (void)setSystemTimeZone { //2、根据手机时区设置设备时区
  81. //先获取手机所在位置的时区
  82. int myTime =[dataSource getSystemTimeZone];
  83. timeZone.timeMin = myTime;
  84. [self SetConfig:NSSTR(timeZone.Name())];
  85. }
  86. - (void)setSystemTime { //3、根据手机时间设置设备时间
  87. NSString *timeString = [dataSource getSystemTimeString];
  88. //获取通道
  89. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  90. //调用保存设备时间的接口
  91. FUN_DevCmdGeneral(self.MsgHandle, SZSTR(channel.deviceMac), 1450, "OPTimeSetting", 0, 5000, (char*)SZSTR(timeString), 0);
  92. }
  93. #pragma mark - 获取摄像机参数配置回调
  94. -(void)OnGetConfig:(CfgParam *)param{
  95. if ([param.name isEqualToString:NSSTR(timeZone.Name())]) {
  96. if ([self.delegate respondsToSelector:@selector(getTimeSynConfigResult:)]) {
  97. [self.delegate getTimeSynConfigResult:param.errorCode];
  98. }
  99. }
  100. }
  101. #pragma mark 保存摄像机参数配置回调
  102. -(void)OnSetConfig:(CfgParam *)param{
  103. if ([param.name isEqualToString:NSSTR(timeZone.Name())]) {
  104. if ([self.delegate respondsToSelector:@selector(setTimeSynConfigResult:)]) {
  105. [self.delegate setTimeSynConfigResult:param.errorCode];
  106. }
  107. }
  108. }
  109. #pragma mark - 读取各项配置的属性值
  110. - (NSString *)getTimeZone { //读取时区
  111. int zone = timeZone.timeMin.Value();
  112. return [dataSource parseTimeZone:zone];
  113. }
  114. - (NSString *)getTimeQuery { //读取时间
  115. return timeQ.timeStr;
  116. }
  117. - (NSString *)getDSTRule { //获取当前夏令时状态
  118. return [common getDSTRule];
  119. }
  120. #pragma mark -
  121. - (void)OnFunSDKResult:(NSNumber *) pParam{
  122. [super OnFunSDKResult:pParam];
  123. NSInteger nAddr = [pParam integerValue];
  124. MsgContent *msg = (MsgContent *)nAddr;
  125. if (msg->id == EMSG_DEV_CMD_EN && msg->param3 == 1452) { //获取时间
  126. NSString *time = (NSString*)[super CMD_Result:pParam Name:TIMEQUERY];
  127. timeQ.timeStr = time;
  128. if ([self.delegate respondsToSelector:@selector(getTimeSynConfigResult:)]) {
  129. [self.delegate getTimeSynConfigResult:msg->param1];
  130. }
  131. }
  132. if (msg->id == EMSG_DEV_CMD_EN && msg->param3 == 1450) { //保存时间
  133. if ([self.delegate respondsToSelector:@selector(setTimeSynConfigResult:)]) {
  134. [self.delegate setTimeSynConfigResult:msg->param1];
  135. }
  136. }
  137. }
  138. @end