diff --git a/CocoaTouch/include/BTstack/BTstackManager.h b/CocoaTouch/include/BTstack/BTstackManager.h index f931200fb..8daa53db1 100644 --- a/CocoaTouch/include/BTstack/BTstackManager.h +++ b/CocoaTouch/include/BTstack/BTstackManager.h @@ -33,23 +33,86 @@ #import #import +#import + +@class BTDevice; + +/* + * Information on devices is stored in a system-wide plist and maintained by BTstackManager + * this includes the link keys + */ + +// TODO enumerate BTstackError type +typedef int BTstackError; @protocol BTstackManagerDelegate; @interface BTstackManager : NSObject { id delegate; } + +// shared instance +(BTstackManager *) sharedInstance; + +// BTstackManagerDelegate protocol implemented by application -(void) setDelegate:(id) delegate; + +// Activation -(void) activate; -// hack --(void) enableRFCOMM; +-(void) deactivate; + +// Discovery +-(BTstackError) startDiscovery; +-(BTstackError) stopDiscovery; +-(int) numberOfDevicesFound; +-(BTDevice*) deviceAtIndex:(int)index; + +// Connections +-(void) createL2CAPChannelAtAddress:(bd_addr_t) address withPSM:(uint16_t)psm authenticated:(BOOL)authentication; +-(void) closeL2CAPChannelWithID:(uint16_t) channelID; +-(void) sendL2CAPPacketForChannelID:(uint16_t)channelID; + +-(void) createRFCOMMConnectionAtAddress:(bd_addr_t) address withChannel:(uint16_t)psm authenticated:(BOOL)authentication; +-(void) closeRFCOMMConnectionWithID:(uint16_t) connectionID; +-(void) sendRFCOMMPacketForChannelID:(uint16_t)connectionID; @end + @protocol BTstackManagerDelegate -- (void) handlePacketWithType:(uint8_t) packet_type - forChannel:(uint16_t) channel - andData:(uint8_t *)packet - withLen:(uint16_t) size; +-(void) btstackManager:(BTstackManager *)btstackManager + handlePacketWithType:(uint8_t) packet_type + forChannel:(uint16_t) channel + andData:(uint8_t *)packet + withLen:(uint16_t) size; + +// Activation events +-(void) activated:(BTstackManager *)btstackManager; +-(void) activationFailed:(BTstackError)error btstackManager:(BTstackManager *)btstackManager ; +-(void) deactivated:(BTstackManager *)btstackManager; + +// Activation callbacks +-(BOOL) disableSystemBluetooth:(BTstackManager *)btstackManager ; // default: YES + +// Discovery events: general +-(void) deviceInfo:(BTDevice*)device btstackManager:(BTstackManager *)btstackManager; +-(void) discoveryStopped:(BTstackManager *)btstackManager ; + +// Discovery events: UI +-(void) discoveryInquiry:(BTstackManager *)btstackManager ; +-(void) discoveryQueryRemoteName:(int)deviceIndex btstackManager:(BTstackManager *)btstackManager; + +// Connection events +-(NSString*) btstackManager:(BTstackManager *)btstackManager pinForAddress:(bd_addr_t)addr; + +-(void) l2capChannelCreatedAtAddress:(bd_addr_t)addr withPSM:(uint16_t)psm asID:(uint16_t)channelID btstackManager:(BTstackManager *)btstackManager; +-(void) l2capChannelCreateFailedAtAddress:(bd_addr_t)addr withPSM:(uint16_t)psm error:(BTstackError)error btstackManager:(BTstackManager *)btstackManager; +-(void) l2capChannelClosedForChannelID:(uint16_t)channelID btstackManager:(BTstackManager *)btstackManager; +-(void) l2capDataReceivedForChannelID:(uint16_t)channelID withData:(uint8_t *)packet andOfLen:(uint16_t) size btstackManager:(BTstackManager *)btstackManager; + +-(void) rfcommConnectionCreatedAtAddress:(bd_addr_t)addr forChannel:(uint16_t)channel asID:(uint16_t)connectionID btstackManager:(BTstackManager *)btstackManager; +-(void) rfcommConnectionCreateFailedAtAddress:(bd_addr_t)addr forChannel:(uint16_t)channel error:(BTstackError)error btstackManager:(BTstackManager *)btstackManager; +-(void) rfcommConnectionClosedForConnectionID:(uint16_t)connectionID btstackManager:(BTstackManager *)btstackManager; +-(void) rfcommDataReceivedForConnectionID:(uint16_t)connectionID withData:(uint8_t *)packet andOfLen:(uint16_t) size btstackManager:(BTstackManager *)btstackManager; + @end diff --git a/CocoaTouch/src/BTstackManager.m b/CocoaTouch/src/BTstackManager.m index 413dd4a13..31d284434 100644 --- a/CocoaTouch/src/BTstackManager.m +++ b/CocoaTouch/src/BTstackManager.m @@ -78,7 +78,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe } -(void) enableRFCOMM { - rfcomm_register_packet_handler(packet_handler); + // rfcomm_register_packet_handler(packet_handler); } - (void) handlePacketWithType:(uint8_t)packet_type forChannel:(uint16_t)channel andData:(uint8_t *)packet withLen:(uint16_t) size {