mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-14 01:27:41 +00:00
cache remote names in plist
This commit is contained in:
parent
fb6dae1e84
commit
b2c95ae948
@ -35,6 +35,10 @@
|
||||
#import <stdint.h>
|
||||
#import <btstack/btstack.h>
|
||||
|
||||
#define PREFS_REMOTE_NAME @"RemoteName"
|
||||
#define PREFS_LINK_KEY @"LinkKey"
|
||||
#define BTstackManagerID @"ch.ringwald.btstack"
|
||||
|
||||
@class BTDevice;
|
||||
|
||||
/*
|
||||
@ -99,6 +103,9 @@ typedef enum {
|
||||
|
||||
// TODO add l2cap and rfcomm incoming commands
|
||||
|
||||
// store remote names and link keys
|
||||
-(void)storeDeviceInfo;
|
||||
|
||||
@property (nonatomic, assign) id<BTstackManagerDelegate> delegate;
|
||||
@end
|
||||
|
||||
|
@ -35,7 +35,6 @@
|
||||
#import <btstack/BTDevice.h>
|
||||
#import "../../RFCOMM/rfcomm.h"
|
||||
|
||||
#define BTstackManagerID @"ch.ringwald.btstack"
|
||||
#define INQUIRY_INTERVAL 3
|
||||
|
||||
static BTstackManager * btstackManager = nil;
|
||||
@ -305,6 +304,11 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
|
||||
device.classOfDevice = READ_BT_24(packet, 3 + numResponses*(6+1+1+1) + i*3);
|
||||
device.clockOffset = READ_BT_16(packet, 3 + numResponses*(6+1+1+1+3) + i*2) & 0x7fff;
|
||||
device.rssi = 0;
|
||||
// get name from deviceInfo
|
||||
NSMutableDictionary * deviceDict = [deviceInfo objectForKey:[device addressString]];
|
||||
if (deviceDict){
|
||||
device.name = [deviceDict objectForKey:PREFS_REMOTE_NAME];
|
||||
}
|
||||
[discoveredDevices addObject:device];
|
||||
|
||||
[_delegate deviceInfo:device];
|
||||
@ -324,6 +328,11 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
|
||||
device.classOfDevice = READ_BT_24(packet, 3 + numResponses*(6+1+1) + i*3);
|
||||
device.clockOffset = READ_BT_16(packet, 3 + numResponses*(6+1+1+3) + i*2) & 0x7fff;
|
||||
device.rssi = packet [3 + numResponses*(6+1+1+3+2) + i*1];
|
||||
// get name from deviceInfo
|
||||
NSMutableDictionary * deviceDict = [deviceInfo objectForKey:[device addressString]];
|
||||
if (deviceDict){
|
||||
device.name = [deviceDict objectForKey:PREFS_REMOTE_NAME];
|
||||
}
|
||||
[discoveredDevices addObject:device];
|
||||
|
||||
[_delegate deviceInfo:device];
|
||||
@ -349,7 +358,15 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
|
||||
// get lenght: first null byte or max 248 chars
|
||||
int nameLen = 0;
|
||||
while (nameLen < 248 && packet[9+nameLen]) nameLen++;
|
||||
device.name = [[NSString alloc] initWithBytes:&packet[9] length:nameLen encoding:NSUTF8StringEncoding];
|
||||
NSString *name = [[NSString alloc] initWithBytes:&packet[9] length:nameLen encoding:NSUTF8StringEncoding];
|
||||
device.name = name;
|
||||
// set in device info
|
||||
NSMutableDictionary *deviceDict = [deviceInfo objectForKey:[device addressString]];
|
||||
if (!deviceDict){
|
||||
deviceDict = [NSMutableDictionary dictionaryWithCapacity:3];
|
||||
[deviceInfo setObject:deviceDict forKey:[device addressString]];
|
||||
}
|
||||
[deviceDict setObject:name forKey:PREFS_REMOTE_NAME];
|
||||
}
|
||||
[_delegate deviceInfo:device];
|
||||
discoveryDeviceIndex++;
|
||||
|
@ -27,6 +27,7 @@
|
||||
|
||||
-(void) discoveryInquiry{
|
||||
NSLog(@"discoveryInquiry!");
|
||||
[bt storeDeviceInfo];
|
||||
}
|
||||
-(void) discoveryQueryRemoteName:(int)deviceIndex{
|
||||
NSLog(@"discoveryQueryRemoteName %u/%u!", deviceIndex+1, [bt numberOfDevicesFound]);
|
||||
|
4
TODO.txt
4
TODO.txt
@ -6,14 +6,10 @@
|
||||
NEXT:
|
||||
|
||||
- Provide BTstackManager Objective-C class
|
||||
- set remote names in deviceInfo
|
||||
- store deviceInfo on dealloc
|
||||
- add discard discovered devices
|
||||
- create new device discovery view: BTDiscoveryViewController
|
||||
- implement l2cap code
|
||||
- implement rfcomm code
|
||||
|
||||
|
||||
- figure out how to receive iPhone System Power IONotifications (in BTdaemon) to detect, when phone gets locked
|
||||
- some trick
|
||||
- use Cocoa run loop for background app?
|
||||
|
Loading…
x
Reference in New Issue
Block a user