'UUID'에 해당되는 글 2건

Bluetooth UUID

개발/Note 2020. 12. 10. 13:31
반응형

블루투스의 UUID

  • 범용 고유 번호(Universally Unique IDentifiers) 라고 불리며, 128 비트의 숫자들을 조합한다.
  • 범용적으로 사용할 수 있는 고유의 ID를 사용하기 위해 생성되며, 그렇기 때문에 128 비트의 HEX 조합 unique 하여야 한다.
  • Bluetooth 에서는 device에서 제공하는 service를 검색하여 각 service 마다 UUID 를 부여하는등 많은 부분에서 사용된다.

 

UUID의 구성 요소

[time low] - [time mid] - [time high and version] - [clock seq_hi and reserved] - [clock seq low node]

ex) 000011001-0000-1000-8000-00805F9B34FB

  • time low : 타임 스탬프(시간표시) 의 최하위 32 비트.
  • 블루투스 device 끼리 통신을 하기 위해서 소켓 생성시 UUID 가 필요한데 이는 해당 프로토콜의 의미 한다.
  • 안드로이드 플랫폼의 단말기끼리는 어떤 UUID를 사용하여도 되지만 특정 프로토콜의 device에 접근하 기 위해서는 각각의 프로토콜 UUID 를 사용하여만 한다.

 

 

반응형
블로그 이미지

SKY STORY

,

NSString <-> CBUUID

개발/iOS 2020. 6. 3. 15:54
반응형

특정 문자열을 UUID 포멧 문자열로 바꿔야하는 경우가 있다. 이런경우 NSString과 CBUUID간 변환이 용이해야 한다. 만약 특정 문자열이 길이가 uuid포멧 길이보다 작다면 uuid포멧 빈 공간에 ' '을 채워서 생성되도록 만들어 보았다.

 

NSString -> CBUUID

NSString *string = [@"233R194013780790" toUUID];
CBUUID *uuid = [CBUUID UUIDWithString:string];

 

CBUUID -> NSString

// 32333352-3139-3430-3133-373830373930
NSString *uuidString = [uuid representativeString];
NSLog(@"%@", uuidString);

// 233R194013780790
NSString *tid = [uuid toString];
NSLog(@"%@", tid);

 

 

::: 관련함수 :::

// String to Hexadecimal String
-(NSString *)toHex {
    char *utf8 = (char *)[self UTF8String];
    NSMutableString *hex = [NSMutableString string];
    while ( *utf8 ) {
        [hex appendFormat:@"%02X" , *utf8++ & 0x00FF];
    }
    return [NSString stringWithFormat:@"%@", hex];
}

// Hexadecimal String to NSData
-(NSData *)hex2Data {
    NSMutableData *stringData = [[NSMutableData alloc] init];
    unsigned char whole_byte;
    char byte_chars[3] = {'\0','\0','\0'};
    int i;
    for (i=0; i < [self length] / 2; i++) {
        byte_chars[0] = [self characterAtIndex:i*2];
        byte_chars[1] = [self characterAtIndex:i*2+1];
        whole_byte = strtol(byte_chars, NULL, 16);
        [stringData appendBytes:&whole_byte length:1];
    }
    return stringData;
}

-(CBUUID *)toCBUUID {
    if (NO == [self isValidUUID]) {
        NSLog(@"포멧 비정상.");
        return nil;
    }
    return [CBUUID UUIDWithString:self];
}

// uuid 포멧 검증
-(BOOL)isValidUUID {
    return (BOOL)[[NSUUID alloc] initWithUUIDString:self];
}

// 문자열을 hex로 변경한뒤 UUID포멧으로 변경
-(NSString *)toUUID {
    NSString *string = self;
    if (string.length < 16) {
        NSString *spaceString = @"";
        for (NSInteger i=0; i<(16 - string.length); ++i) {
            spaceString = [spaceString stringByAppendingString:@" "];
        }
        // 길이가 작을 경우 뒤쪽에 공백추가
        string = [NSString stringWithFormat:@"%@%@", self, spaceString];
    }

    NSData *data = [string toData];
    NSUInteger bytesToConvert = [data length];
    const unsigned char *uuidBytes = [data bytes];
    NSMutableString *outputString = [NSMutableString stringWithCapacity:16];

    for (NSUInteger currentByteIndex = 0; currentByteIndex < bytesToConvert; currentByteIndex++) {
        switch (currentByteIndex) {
            case 3:
            case 5:
            case 7:
            case 9:[outputString appendFormat:@"%02X-", uuidBytes[currentByteIndex]]; break;
            default:[outputString appendFormat:@"%02X", uuidBytes[currentByteIndex]];
        }
    }
    return outputString;
}

-(NSData *)toData  {
    NSData *nsData = [self dataUsingEncoding:NSUTF8StringEncoding];
    return nsData;
}

 

2020/06/03 - [iOS/Swift] - 위치서비스(location service) 활성화 여부 체크

2020/06/02 - [개발노트] - Luhn 알고리즘

2020/06/01 - [iOS/Swift] - The Ultimate Guide to WKWebView

2020/06/01 - [iOS/Tips] - WKWebView에서 로컬 웹 파일 및 리소스 로드

2020/06/01 - [iOS/Tips] - WKWebView

2020/05/29 - [iOS/Swift] - 네비게이션바 투명 처리

2020/05/29 - [개발툴/Xcode] - NFC Xcode 설정

2020/05/29 - [개발노트] - NFC (Near Field Communication)

2020/05/29 - [개발노트] - NFC Tag 저장용량

2020/05/29 - [개발노트] - NDEF

2020/05/29 - [개발노트] - Mifare

2020/05/29 - [iOS/Swift] - 클로저(Closure)

2020/05/29 - [개발노트] - QR 코드 결제 타입

2020/05/29 - [iOS/Objective-C] - Objective-C Block Syntax

2020/05/29 - [iOS/Objective-C] - Detect permission of camera in iOS

 

반응형
블로그 이미지

SKY STORY

,