DeviceControl.m 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. //
  2. // DeviceControl.m
  3. // FunSDKDemo
  4. //
  5. // Created by XM on 2018/5/10.
  6. // Copyright © 2018年 XM. All rights reserved.
  7. //
  8. #import "DeviceControl.h"
  9. #import "DevicelistArchiveModel.h"
  10. @interface DeviceControl ()
  11. {
  12. NSMutableArray *deviceArray; //包含所有设备的数组
  13. NSMutableArray *channelPlayingArray; //即将播放的设备通道数组
  14. NSInteger selectChannel; //当前预览通道数组中,正在处理的通道索引(多通道预览时生效,目前只添加了一个通道进行预览,所以默认0不需要设置)
  15. }
  16. @end
  17. @implementation DeviceControl
  18. + (instancetype)getInstance {
  19. static DeviceControl *Manager;
  20. static dispatch_once_t onceToken;
  21. dispatch_once(&onceToken, ^{
  22. Manager = [[DeviceControl alloc]init];
  23. });
  24. return Manager;
  25. }
  26. - (id)init {
  27. self = [super init];
  28. deviceArray = [[NSMutableArray alloc] initWithCapacity:0];
  29. channelPlayingArray = [[NSMutableArray alloc] initWithCapacity:0];
  30. [DevicelistArchiveModel sharedDeviceListArchiveModel];
  31. return self;
  32. }
  33. #pragma mark 清空所有缓存的设备
  34. - (void)clearDeviceArray {
  35. [deviceArray removeAllObjects];
  36. }
  37. #pragma mark 添加设备
  38. - (void)addDevice:(DeviceObject*)devObject {
  39. [deviceArray addObject:devObject];
  40. }
  41. #pragma mark 获取所有设备
  42. - (NSMutableArray*)currentDeviceArray {
  43. return deviceArray;
  44. }
  45. #pragma mark - 将要预览的设备通道数组处理
  46. - (void)setSelectChannel:(ChannelObject *)channel {
  47. [channelPlayingArray removeAllObjects];
  48. [channelPlayingArray addObject:channel];
  49. }
  50. - (NSMutableArray *)getSelectChannelArray {
  51. return [channelPlayingArray mutableCopy];
  52. }
  53. - (void)cleanSelectChannel {
  54. [channelPlayingArray removeAllObjects];
  55. }
  56. #pragma mark - 设置当前正要处理的通道,比如抓图录像中的通道,设备配置中的通道等
  57. - (void)setSelectChannelIndex:(NSInteger)selectChannel {
  58. selectChannel = selectChannel;
  59. }
  60. - (NSInteger)getSelectChannelIndex {
  61. return selectChannel;
  62. }
  63. - (ChannelObject*)getSelectChannel {
  64. return [channelPlayingArray objectAtIndex:selectChannel];
  65. }
  66. #pragma mark - 保存设备到本地存储 (设备数据发成变动时,重新存储)
  67. - (void)saveDeviceList {
  68. [[DevicelistArchiveModel sharedDeviceListArchiveModel] saveDevicelist:[deviceArray mutableCopy]];
  69. }
  70. #pragma mark 通过序列号获取deviceObject对象
  71. - (DeviceObject *)GetDeviceObjectBySN:(NSString *)devSN {
  72. if (deviceArray == nil || devSN == nil) {
  73. return nil;
  74. }
  75. for (int i = 0; i < deviceArray.count; i ++) {
  76. DeviceObject *devObject = [deviceArray objectAtIndex:i];
  77. if (devObject == nil) {
  78. continue;
  79. }
  80. if ([devObject.deviceMac isEqualToString:devSN]) {
  81. return devObject;
  82. }
  83. }
  84. return nil;
  85. }
  86. #pragma mark 获取channelObject对象
  87. - (ChannelObject*)addName:(NSString*)channelName ToDeviceObject:(DeviceObject*)devObject {
  88. ChannelObject *object = [[ChannelObject alloc] init];
  89. object.channelName = channelName;
  90. object.deviceMac = devObject.deviceMac;
  91. object.loginName = devObject.loginName;
  92. object.loginPsw = devObject.loginPsw;
  93. return object;
  94. }
  95. #pragma mark 设备列表比较 (获取设备列表成功之后,服务器获取到的设备和本地缓存的设备比较)
  96. - (void)checkDeviceValid {
  97. //传递一下数组
  98. [[DevicelistArchiveModel sharedDeviceListArchiveModel] setReceivedSeviceArray:deviceArray];
  99. //返回对比之后的设备列表数组
  100. NSMutableArray *array = [[DevicelistArchiveModel sharedDeviceListArchiveModel] devicelistCompare];
  101. if (array && array.count >0) {
  102. deviceArray = [array mutableCopy];
  103. }
  104. }
  105. @end