|
@@ -6,6 +6,7 @@
|
|
|
//
|
|
|
|
|
|
#import "PlayerViewController+otherDelegate.h"
|
|
|
+#import "RCCommandHelp.h"
|
|
|
|
|
|
@implementation PlayerViewController (otherDelegate)
|
|
|
|
|
@@ -22,4 +23,218 @@
|
|
|
|
|
|
exit(0);/*强制退出app*/
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#pragma mark 监听文件开始的的通知
|
|
|
+- (void)beginGotoUploadFileFun:(NSNotification *)notification
|
|
|
+{
|
|
|
+ TZAssetModel *assetModel = [notification object];
|
|
|
+ HLog(@"%@",assetModel);
|
|
|
+
|
|
|
+ if(!self.taskUid){
|
|
|
+ self.taskUid = [iTools getTaskUidStr];
|
|
|
+ self.fileName = [assetModel.asset valueForKey:@"filename"];
|
|
|
+ self.AllFileData = assetModel.imageData;
|
|
|
+ self.indexOfUploadFlie = 0;
|
|
|
+
|
|
|
+ HLog(@"%@ %@",self.taskUid,self.fileName);
|
|
|
+ self.cutFileDataArr = [self fileCutPartsBy:self.AllFileData];
|
|
|
+ }
|
|
|
+
|
|
|
+ NSString * commandStr = [RCCommandHelp applyForUploadFileBy:self.taskUid filePath:self.fileName];
|
|
|
+ [self.commandChannelManager rc_sendData:commandStr];
|
|
|
+}
|
|
|
+
|
|
|
+- (void)applyUploadFileServiceResponseFun:(NSDictionary *)dataDict
|
|
|
+{
|
|
|
+ if([dataDict isKindOfClass:[NSDictionary class]]){
|
|
|
+ if ([[dataDict allKeys] containsObject:@"data"]) {
|
|
|
+ NSDictionary *data = dataDict[@"data"];
|
|
|
+
|
|
|
+ if ([[data allKeys] containsObject:@"status"]) {
|
|
|
+ NSString *status = [data objectForKey:@"status"];
|
|
|
+ if(![status isKindOfClass:[NSString class]]){
|
|
|
+ status = [[NSString alloc] initWithFormat:@"%@",status];
|
|
|
+ }
|
|
|
+
|
|
|
+ if ([status isEqualToString:@"1"]) {
|
|
|
+ mainBlock(^{
|
|
|
+ // 申请失败;
|
|
|
+ });
|
|
|
+ }else if ([status isEqualToString:@"0"]){
|
|
|
+ if ([[data allKeys] containsObject:@"taskUid"]) {
|
|
|
+ NSString *taskUid = data[@"taskUid"];
|
|
|
+ if(![status isKindOfClass:[NSString class]]){
|
|
|
+ taskUid = [[NSString alloc] initWithFormat:@"%@",taskUid];
|
|
|
+ }
|
|
|
+
|
|
|
+ if(taskUid && [taskUid isEqualToString:self.taskUid]){
|
|
|
+ //答复的taskUid 跟申请的一致 开发发送内容
|
|
|
+ [self upLoadFileFun];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ mainBlock(^{
|
|
|
+ //申请成功;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ //异常
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ //异常
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+- (int)getBCC:(NSData*)data
|
|
|
+{
|
|
|
+ int bcc = 0;
|
|
|
+ for (int i = 0; i < [data length]; i++) {
|
|
|
+ Byte buffer;
|
|
|
+ [data getBytes:&buffer range:NSMakeRange(i, 1)];
|
|
|
+ bcc = (UInt8) (bcc ^ buffer);
|
|
|
+
|
|
|
+ //HLog(@"bcc 222 %d",bcc);
|
|
|
+ }
|
|
|
+
|
|
|
+ return bcc;
|
|
|
+}
|
|
|
+
|
|
|
+//int getbcc(UInt8 *data, int length) {
|
|
|
+// int bcc = 0;
|
|
|
+// for (int i = 0; i < length; i++) {
|
|
|
+// bcc = (UInt8) (bcc ^ data[i]);
|
|
|
+// }
|
|
|
+//
|
|
|
+// return bcc;
|
|
|
+//}
|
|
|
+
|
|
|
+
|
|
|
+#pragma mark 文件切片
|
|
|
+-(NSMutableArray *)fileCutPartsBy:(NSData*)curData{
|
|
|
+
|
|
|
+ NSData * data = curData;
|
|
|
+
|
|
|
+ NSUInteger allLength = data.length;
|
|
|
+
|
|
|
+ NSUInteger subs = 1*1024;//4096;//要切片的大小,我这里设置的是4096字节
|
|
|
+
|
|
|
+ NSInteger index = 0;//起始位置
|
|
|
+
|
|
|
+ NSMutableArray *dataArray =[NSMutableArray new];
|
|
|
+
|
|
|
+ do {
|
|
|
+
|
|
|
+ if (allLength>subs) {
|
|
|
+
|
|
|
+ NSRange range =NSMakeRange(index*subs, subs);
|
|
|
+
|
|
|
+ index++;
|
|
|
+
|
|
|
+ NSLog(@"%@",NSStringFromRange(range));
|
|
|
+
|
|
|
+ [dataArray addObject:[data subdataWithRange:range]];
|
|
|
+
|
|
|
+ allLength = allLength - subs;
|
|
|
+
|
|
|
+ }else{
|
|
|
+
|
|
|
+ NSRange range = NSMakeRange(index*subs, allLength);
|
|
|
+
|
|
|
+ NSLog(@"%@",NSStringFromRange(range));
|
|
|
+
|
|
|
+ [dataArray addObject:[data subdataWithRange:range]];
|
|
|
+
|
|
|
+ allLength = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ } while (allLength>0);
|
|
|
+
|
|
|
+ NSLog(@"%@",dataArray);//最后得到切片的结果,数组里面是NSData对象
|
|
|
+
|
|
|
+ return dataArray;
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark 可以发送文件了
|
|
|
+/*
|
|
|
+文件数据字节流byte[]
|
|
|
+ 格式1:下载日志文件压缩包
|
|
|
+ |head|msgType|taskId|datalen| curNum | totalNum| data |bcc校验|end|
|
|
|
+ 长度: 1 1 6 4 2 2 datalen-4 1 1
|
|
|
+ 0x68 0x0e 0x16
|
|
|
+ bcc校验从第1位 也就是从msgType起 到 校验位前(不包含校验位)数据作bcc校验
|
|
|
+ */
|
|
|
+- (void)upLoadFileFun
|
|
|
+{
|
|
|
+
|
|
|
+ //NSMutableArray *sendDataArray =[NSMutableArray new];
|
|
|
+
|
|
|
+ //head
|
|
|
+ unsigned char headNum = 104;
|
|
|
+ NSData *headData = [NSMutableData dataWithBytes:&headNum length:sizeof(headNum)];
|
|
|
+ HLog(@"headData:%@",headData);
|
|
|
+
|
|
|
+ //msgType
|
|
|
+ unsigned char msgType = 12;
|
|
|
+ NSData *msgTypeData = [NSMutableData dataWithBytes:&msgType length:sizeof(msgType)];
|
|
|
+ HLog(@"msgTypeData:%@",msgTypeData);
|
|
|
+
|
|
|
+ //taskId
|
|
|
+ NSData *taskIdData = [self.taskUid dataUsingEncoding:NSUTF8StringEncoding];
|
|
|
+ HLog(@"taskIdData:%@",taskIdData);
|
|
|
+
|
|
|
+ //datalen
|
|
|
+ int datalenNum = 1024;
|
|
|
+ NSData *datalenData = [NSData dataWithBytes:&datalenNum length:sizeof(datalenNum)];
|
|
|
+ HLog(@"datalenData %@",datalenData);
|
|
|
+
|
|
|
+ //curNum
|
|
|
+ short curNum = (short)self.indexOfUploadFlie;
|
|
|
+ NSData *curNumData = [NSData dataWithBytes:&curNum length:sizeof(curNum)];
|
|
|
+ HLog(@"curNumData:%@",curNumData);
|
|
|
+
|
|
|
+ //totalNum
|
|
|
+ short totalNum = (short)self.cutFileDataArr.count;
|
|
|
+ NSData *totalNumData = [NSData dataWithBytes:&totalNum length:sizeof(totalNum)];
|
|
|
+ HLog(@"totalNumData:%@",totalNumData);
|
|
|
+
|
|
|
+ //data
|
|
|
+ NSData *curData = self.cutFileDataArr[self.indexOfUploadFlie];
|
|
|
+ HLog(@"headData:%@",curData);
|
|
|
+
|
|
|
+ NSMutableData *checkBCCData = [NSMutableData new];
|
|
|
+ [checkBCCData appendData:msgTypeData];
|
|
|
+ [checkBCCData appendData:taskIdData];
|
|
|
+ [checkBCCData appendData:datalenData];
|
|
|
+ [checkBCCData appendData:curNumData];
|
|
|
+ [checkBCCData appendData:totalNumData];
|
|
|
+ [checkBCCData appendData:curData];
|
|
|
+
|
|
|
+ int bccCheck = [self getBCC:checkBCCData];
|
|
|
+ HLog(@"bcc 000 %d",bccCheck);
|
|
|
+
|
|
|
+ //bcc校验
|
|
|
+ unsigned char bccNum = (unsigned char)bccCheck;
|
|
|
+ NSData *bccData = [NSMutableData dataWithBytes:&bccNum length:sizeof(bccNum)];
|
|
|
+ HLog(@"%@",bccData);
|
|
|
+
|
|
|
+ //end
|
|
|
+ unsigned char endNum = 22;
|
|
|
+ NSData *endData = [NSMutableData dataWithBytes:&endNum length:sizeof(endNum)];
|
|
|
+ HLog(@"%@",endData);
|
|
|
+
|
|
|
+ NSMutableData *sendData = [NSMutableData new];
|
|
|
+ [sendData appendData:headData];
|
|
|
+ [sendData appendData:checkBCCData];
|
|
|
+ [sendData appendData:bccData];
|
|
|
+ [sendData appendData:endData];
|
|
|
+
|
|
|
+ [self.commandChannelManager rc_sendData:sendData];
|
|
|
+ HLog(@"文件上传sendData %@",sendData);
|
|
|
+}
|
|
|
+
|
|
|
@end
|