StorageConfig.mm 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. //
  2. // StorageConfig.m
  3. // FunSDKDemo
  4. //
  5. // Created by XM on 2018/5/8.
  6. // Copyright © 2018年 XM. All rights reserved.
  7. //
  8. #import "FunSDK/netsdk.h"
  9. #import "FunSDK/FunSDK.h"
  10. #import "StorageConfig.h"
  11. #import "StorageInfo.h"
  12. #import "OPStorageManager.h"
  13. #import "StorageGlobal.h"
  14. #import "General_General.h"
  15. #import "DataSource.h"
  16. @interface StorageConfig ()
  17. {
  18. JObjArray<StorageInfo> storageInfo;
  19. OPStorageManager storageManager;
  20. StorageGlobal global;
  21. General_General generalInfo;
  22. DataSource *dataSource;
  23. }
  24. @end
  25. @implementation StorageConfig
  26. - (id)init {
  27. self = [super init];
  28. if (self) {
  29. dataSource = [[DataSource alloc] init];
  30. self.storage = [[Storage alloc] init];
  31. }
  32. return self;
  33. }
  34. #pragma mark 设备信息请求
  35. - (void)getStorageInfoConfig {
  36. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  37. // 1.0 获取普通录像循环录像开关
  38. CfgParam* paramGeneralInfo = [[CfgParam alloc] initWithName:[NSString stringWithUTF8String:generalInfo.Name()] andDevId:channel.deviceMac andChannel:-1 andConfig:&generalInfo andOnce:YES andSaveLocal:NO];
  39. [self AddConfig:paramGeneralInfo];
  40. [self GetConfig:[NSString stringWithUTF8String:generalInfo.Name()]];
  41. // // 2.0 获取设备原始码流循环录像开关 (是勇士类支持原始码流的设备配置,所以这里没有请求)
  42. // CfgParam* paramglobal = [[CfgParam alloc] initWithName:[NSString stringWithUTF8String:global.Name()] andDevId:channel.deviceMac andChannel:-1 andConfig:&global andOnce:YES andSaveLocal:NO];
  43. // [self AddConfig:paramglobal];
  44. // [self GetConfig:[NSString stringWithUTF8String:global.Name()]];
  45. // 3.0 获取设备存储信息
  46. storageInfo.SetName(JK_StorageInfo);
  47. CfgParam* paramStorageInfo = [[CfgParam alloc] initWithName:[NSString stringWithUTF8String:storageInfo.Name()] andDevId:channel.deviceMac andChannel:-1 andConfig:&storageInfo andOnce:YES andSaveLocal:NO];
  48. [self AddConfig:paramStorageInfo];
  49. [self GetConfig:[NSString stringWithUTF8String:storageInfo.Name()]];
  50. // 4.0 添加设备格式化配置 格式化配置请求无效,只能进行设置,所以这里没有进行请求
  51. storageManager.SetName(JK_OPStorageManager);
  52. CfgParam* paramStorageManager = [[CfgParam alloc] initWithName:[NSString stringWithUTF8String:storageManager.Name()] andDevId:channel.deviceMac andChannel:-1 andConfig:&storageManager andOnce:YES andSaveLocal:NO];
  53. [self AddConfig:paramStorageManager];
  54. }
  55. #pragma mark 设置循环存储功能
  56. - (void)setOverWrightConfig:(NSString*)overWright {
  57. BOOL enable = [dataSource getEnableBool:overWright];
  58. if (enable) {generalInfo.OverWrite = [@"OverWrite" UTF8String];}
  59. if (!enable) {generalInfo.OverWrite = [@"StopRecord" UTF8String];}
  60. [self SetConfig:[NSString stringWithUTF8String:generalInfo.Name()]];
  61. }
  62. - (void)setKeyOverWrightConfig:(NSString*)overWright {
  63. BOOL enable = [dataSource getEnableBool:overWright];
  64. global.KeyOverWrite = enable;
  65. [self SetConfig:[NSString stringWithUTF8String:global.Name()]];
  66. }
  67. #pragma mark 格式化存储空间
  68. int format = 0;
  69. - (void)clearStorage {
  70. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  71. storageManager.Action = "Clear";
  72. //循环格式化所有磁盘和分区
  73. for (int i = 0; i < storageInfo.Size(); ++i) {
  74. for (int j = 0; j < storageInfo[i].Partition.Size(); ++j) {
  75. storageManager.SerialNo = i;
  76. storageManager.PartNo = j;
  77. storageManager.Type = "Data";
  78. const char* pCfgBuf = storageManager.ToString();
  79. FUN_DevSetConfig_Json(self.MsgHandle, SZSTR(channel.deviceMac), storageManager.Name(), pCfgBuf, (int)strlen(pCfgBuf), -1, 25000);
  80. format++;//格式化磁盘的数量
  81. }
  82. }
  83. }
  84. #pragma mark 获取设备存储配置回调接口
  85. - (void)OnGetConfig:(CfgParam *)param {
  86. if ([param.name isEqualToString:[NSString stringWithUTF8String:storageInfo.Name()]]) {
  87. if (param.errorCode <= 0) {
  88. }else { //普通设备的存储容量不分开计算
  89. for(int i = 0; i < SDK_MAX_DISK_PER_MACHINE && i < storageInfo.Size(); ++i){
  90. //总录像容量
  91. self.storage.videoTotalStorage += storageInfo[i].Partition[0].TotalSpace.Value();
  92. //空闲录像容量
  93. self.storage.videoFreeStorage += storageInfo[i].Partition[0].RemainSpace.Value();
  94. if (storageInfo[i].Partition.Size() > 1) {
  95. //总的图片容量
  96. self.storage.imgTotalStorage += storageInfo[i].Partition[1].TotalSpace.Value();
  97. //空闲图片容量
  98. self.storage.imgFreeStorage += storageInfo[i].Partition[1].RemainSpace.Value();
  99. }
  100. }
  101. //总容量
  102. self.storage.totalStorage = self.storage.videoTotalStorage +self.storage.imgTotalStorage;
  103. //总空闲容量
  104. self.storage.freeStorage = self.storage.videoFreeStorage +self.storage.imgFreeStorage;
  105. }
  106. if ([self.delegate respondsToSelector:@selector(requestDeviceStorageResult:)]) {
  107. [self.delegate requestDeviceStorageResult:param.errorCode];
  108. }
  109. }
  110. if ([param.name isEqualToString:[NSString stringWithUTF8String:global.Name()]]) {
  111. if (param.errorCode <= 0) {
  112. }
  113. //原始录像循环覆盖参数(运动相机等)
  114. NSString *enable = [dataSource getEnableString:global.KeyOverWrite.Value()];
  115. self.storage.keyOverWrite = enable;
  116. if ([self.delegate respondsToSelector:@selector(requestDeviceStorageResult:)]) {
  117. [self.delegate requestDeviceStorageResult:param.errorCode];
  118. }
  119. }
  120. if ([param.name isEqualToString:[NSString stringWithUTF8String:generalInfo.Name()]]) {
  121. if (param.errorCode <= 0) {
  122. }
  123. //普通录像循环覆盖参数
  124. if ([[NSString stringWithUTF8String:generalInfo.OverWrite.Value()] isEqualToString:@"StopRecord"]) {
  125. NSString *enable = [dataSource getEnableString:NO];
  126. self.storage.overWright = enable;
  127. }
  128. if ([[NSString stringWithUTF8String:generalInfo.OverWrite.Value()] isEqualToString:@"OverWrite"]) {
  129. NSString *enable = [dataSource getEnableString:YES];
  130. self.storage.overWright = enable;
  131. }
  132. if ([self.delegate respondsToSelector:@selector(requestDeviceStorageResult:)]) {
  133. [self.delegate requestDeviceStorageResult:param.errorCode];
  134. }
  135. }
  136. }
  137. #pragma mark - 获取设备存储信息回调
  138. - (void)OnFunSDKResult:(NSNumber *)pParam {
  139. [super OnFunSDKResult:pParam];
  140. }
  141. #pragma mark 保存设备存储配置回调
  142. - (void)OnSetConfig:(CfgParam *)param {
  143. if ( [param.name isEqualToString:[NSString stringWithUTF8String:generalInfo.Name()]] ) {
  144. //普通录像循环录像开关设置
  145. if (param.errorCode <= 0) {
  146. //设置失败
  147. }
  148. if(strcmp(generalInfo.OverWrite.Value(), "StopRecord") == 0?true:false) {
  149. //停止循环录像
  150. }
  151. else {
  152. //开始循环录像
  153. }
  154. if ([self.delegate respondsToSelector:@selector(setOverWrightConfigResult:)]) {
  155. [self.delegate setOverWrightConfigResult:param.errorCode];
  156. }
  157. }
  158. if ([param.name isEqualToString:[NSString stringWithUTF8String:global.Name()]]) {
  159. //原始录像循环录像开关设置
  160. if (param.errorCode <= 0) {
  161. }
  162. if ([self.delegate respondsToSelector:@selector(setKeyOverWrightConfigResult:)]) {
  163. [self.delegate setKeyOverWrightConfigResult:param.errorCode];
  164. }
  165. }
  166. if ([param.name isEqualToString:[NSString stringWithUTF8String:storageManager.Name()]]) {
  167. format--;
  168. if (param.errorCode <= 0) {
  169. //当前这个磁盘格式化失败
  170. }
  171. if (format == 0) {
  172. //所有磁盘格式化结束
  173. if ([self.delegate respondsToSelector:@selector(clearStorageResult:)]) {
  174. [self.delegate clearStorageResult:param.errorCode];
  175. }
  176. }
  177. }
  178. }
  179. #pragma mark - //获取循环录像开关数组
  180. - (NSMutableArray*)getEnableArray {
  181. NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:0];
  182. for (int i =0 ; i< 2; i++) {
  183. NSString *enable = [dataSource getEnableString:i];
  184. [array addObject:enable];
  185. }
  186. return array;
  187. }
  188. @end