mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-18 14:42:33 +00:00
use SpringBoardAccess extension to signal Bluetooth state
This commit is contained in:
parent
a376a19bd1
commit
56c253c9c9
6
TODO.txt
6
TODO.txt
@ -3,9 +3,9 @@
|
|||||||
Last milestone reached: BTdaemon automatically started by launchd on Mac and iPhone
|
Last milestone reached: BTdaemon automatically started by launchd on Mac and iPhone
|
||||||
|
|
||||||
NEXT:
|
NEXT:
|
||||||
- add code to toggle status bar icons via the SpringBoardAcess extension
|
- check why test.c does not start up instantly when Bluetooth is already turned on
|
||||||
- clean up debug output: seperate messages from errors
|
- clean up debug output: messages to stdou, errors to stderr
|
||||||
- decide on error reporting
|
- decide on error reporting from BTdaemon
|
||||||
- command_status_event with custom errors
|
- command_status_event with custom errors
|
||||||
- hci open failed
|
- hci open failed
|
||||||
- btstack error
|
- btstack error
|
||||||
|
@ -18,9 +18,9 @@
|
|||||||
9C1F0E9A0FDAE023008F472F /* run_loop.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C1F0E980FDAE023008F472F /* run_loop.c */; };
|
9C1F0E9A0FDAE023008F472F /* run_loop.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C1F0E980FDAE023008F472F /* run_loop.c */; };
|
||||||
9C2071F310014D3200A07EA4 /* hci_transport_usb.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C2071F210014D3200A07EA4 /* hci_transport_usb.c */; };
|
9C2071F310014D3200A07EA4 /* hci_transport_usb.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C2071F210014D3200A07EA4 /* hci_transport_usb.c */; };
|
||||||
9C46FC3A0FA906F700ABEF05 /* hci_transport_h4.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C46FC360FA906F700ABEF05 /* hci_transport_h4.c */; };
|
9C46FC3A0FA906F700ABEF05 /* hci_transport_h4.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C46FC360FA906F700ABEF05 /* hci_transport_h4.c */; };
|
||||||
9C6459E01037554B0081A00B /* platform_iphone.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C6459DF1037554B0081A00B /* platform_iphone.m */; };
|
|
||||||
9C77E7511066680800F39DCF /* SpringBoardAccessExtension.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C77E7501066680800F39DCF /* SpringBoardAccessExtension.mm */; };
|
9C77E7511066680800F39DCF /* SpringBoardAccessExtension.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C77E7501066680800F39DCF /* SpringBoardAccessExtension.mm */; };
|
||||||
9C77E75510666B5D00F39DCF /* SpringBoardAccess.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C77E75310666B5D00F39DCF /* SpringBoardAccess.c */; };
|
9C77E75510666B5D00F39DCF /* SpringBoardAccess.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C77E75310666B5D00F39DCF /* SpringBoardAccess.c */; };
|
||||||
|
9C77E79210667F0600F39DCF /* platform_iphone.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C77E79110667F0600F39DCF /* platform_iphone.c */; };
|
||||||
9C7B5AC0100BD3340065D87E /* linked_list.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C7B5ABF100BD3340065D87E /* linked_list.c */; };
|
9C7B5AC0100BD3340065D87E /* linked_list.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C7B5ABF100BD3340065D87E /* linked_list.c */; };
|
||||||
9C7B5D01100FC9AE0065D87E /* btstack.c in Sources */ = {isa = PBXBuildFile; fileRef = 9CC813A10FFC0774002816F9 /* btstack.c */; };
|
9C7B5D01100FC9AE0065D87E /* btstack.c in Sources */ = {isa = PBXBuildFile; fileRef = 9CC813A10FFC0774002816F9 /* btstack.c */; };
|
||||||
9C7B5D03100FC9BB0065D87E /* test.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C7B5B7E100D04450065D87E /* test.c */; };
|
9C7B5D03100FC9BB0065D87E /* test.c in Sources */ = {isa = PBXBuildFile; fileRef = 9C7B5B7E100D04450065D87E /* test.c */; };
|
||||||
@ -66,17 +66,16 @@
|
|||||||
9C46FC370FA906F700ABEF05 /* hci_transport_h4.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = hci_transport_h4.h; path = src/hci_transport_h4.h; sourceTree = "<group>"; };
|
9C46FC370FA906F700ABEF05 /* hci_transport_h4.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = hci_transport_h4.h; path = src/hci_transport_h4.h; sourceTree = "<group>"; };
|
||||||
9C46FC380FA906F700ABEF05 /* hci_transport.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = hci_transport.h; path = src/hci_transport.h; sourceTree = "<group>"; };
|
9C46FC380FA906F700ABEF05 /* hci_transport.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = hci_transport.h; path = src/hci_transport.h; sourceTree = "<group>"; };
|
||||||
9C6459DE1037554B0081A00B /* platform_iphone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = platform_iphone.h; path = src/platform_iphone.h; sourceTree = "<group>"; };
|
9C6459DE1037554B0081A00B /* platform_iphone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = platform_iphone.h; path = src/platform_iphone.h; sourceTree = "<group>"; };
|
||||||
9C6459DF1037554B0081A00B /* platform_iphone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = platform_iphone.m; path = src/platform_iphone.m; sourceTree = "<group>"; };
|
|
||||||
9C77E36410618B1D00F39DCF /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.in; path = SpringBoardAccess/Makefile.in; sourceTree = "<group>"; };
|
9C77E36410618B1D00F39DCF /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.in; path = SpringBoardAccess/Makefile.in; sourceTree = "<group>"; };
|
||||||
9C77E36710618C6500F39DCF /* SpringBoardAccess-test.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "SpringBoardAccess-test.c"; path = "SpringBoardAccess/SpringBoardAccess-test.c"; sourceTree = "<group>"; };
|
9C77E36710618C6500F39DCF /* SpringBoardAccess-test.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "SpringBoardAccess-test.c"; path = "SpringBoardAccess/SpringBoardAccess-test.c"; sourceTree = "<group>"; };
|
||||||
9C77E4AE10634E3100F39DCF /* launch.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = launch.h; sourceTree = "<group>"; };
|
9C77E4AE10634E3100F39DCF /* launch.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = launch.h; sourceTree = "<group>"; };
|
||||||
9C77E4AF10634E3100F39DCF /* libsubstrate.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libsubstrate.dylib; sourceTree = "<group>"; };
|
9C77E4AF10634E3100F39DCF /* libsubstrate.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libsubstrate.dylib; sourceTree = "<group>"; };
|
||||||
9C77E4B010634E3100F39DCF /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
|
9C77E4B010634E3100F39DCF /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
|
||||||
9C77E4B110634E3100F39DCF /* SpringBoard.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = SpringBoard.h; sourceTree = "<group>"; };
|
|
||||||
9C77E4B210634E3100F39DCF /* substrate.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = substrate.h; sourceTree = "<group>"; };
|
9C77E4B210634E3100F39DCF /* substrate.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = substrate.h; sourceTree = "<group>"; };
|
||||||
9C77E7501066680800F39DCF /* SpringBoardAccessExtension.mm */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.objcpp; name = SpringBoardAccessExtension.mm; path = SpringBoardAccess/SpringBoardAccessExtension.mm; sourceTree = "<group>"; };
|
9C77E7501066680800F39DCF /* SpringBoardAccessExtension.mm */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.objcpp; name = SpringBoardAccessExtension.mm; path = SpringBoardAccess/SpringBoardAccessExtension.mm; sourceTree = "<group>"; };
|
||||||
9C77E75310666B5D00F39DCF /* SpringBoardAccess.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = SpringBoardAccess.c; path = SpringBoardAccess/SpringBoardAccess.c; sourceTree = "<group>"; };
|
9C77E75310666B5D00F39DCF /* SpringBoardAccess.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = SpringBoardAccess.c; path = SpringBoardAccess/SpringBoardAccess.c; sourceTree = "<group>"; };
|
||||||
9C77E75410666B5D00F39DCF /* SpringBoardAccess.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = SpringBoardAccess.h; path = SpringBoardAccess/SpringBoardAccess.h; sourceTree = "<group>"; };
|
9C77E75410666B5D00F39DCF /* SpringBoardAccess.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = SpringBoardAccess.h; path = SpringBoardAccess/SpringBoardAccess.h; sourceTree = "<group>"; };
|
||||||
|
9C77E79110667F0600F39DCF /* platform_iphone.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = platform_iphone.c; path = src/platform_iphone.c; sourceTree = "<group>"; };
|
||||||
9C78A04A103C6734003B2950 /* Default_BTstack.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default_BTstack.png; path = resources/Default_BTstack.png; sourceTree = "<group>"; };
|
9C78A04A103C6734003B2950 /* Default_BTstack.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default_BTstack.png; path = resources/Default_BTstack.png; sourceTree = "<group>"; };
|
||||||
9C78A04B103C6734003B2950 /* Default_BTstackActive.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default_BTstackActive.png; path = resources/Default_BTstackActive.png; sourceTree = "<group>"; };
|
9C78A04B103C6734003B2950 /* Default_BTstackActive.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default_BTstackActive.png; path = resources/Default_BTstackActive.png; sourceTree = "<group>"; };
|
||||||
9C78A04C103C6734003B2950 /* FSO_BTstack.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = FSO_BTstack.png; path = resources/FSO_BTstack.png; sourceTree = "<group>"; };
|
9C78A04C103C6734003B2950 /* FSO_BTstack.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = FSO_BTstack.png; path = resources/FSO_BTstack.png; sourceTree = "<group>"; };
|
||||||
@ -167,8 +166,8 @@
|
|||||||
9C00F7311017ACC3008DAB17 /* socket_connection.h */,
|
9C00F7311017ACC3008DAB17 /* socket_connection.h */,
|
||||||
9C00F86210191097008DAB17 /* utils.c */,
|
9C00F86210191097008DAB17 /* utils.c */,
|
||||||
9C00F86310191097008DAB17 /* utils.h */,
|
9C00F86310191097008DAB17 /* utils.h */,
|
||||||
|
9C77E79110667F0600F39DCF /* platform_iphone.c */,
|
||||||
9C6459DE1037554B0081A00B /* platform_iphone.h */,
|
9C6459DE1037554B0081A00B /* platform_iphone.h */,
|
||||||
9C6459DF1037554B0081A00B /* platform_iphone.m */,
|
|
||||||
);
|
);
|
||||||
name = Source;
|
name = Source;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -201,7 +200,6 @@
|
|||||||
9C77E4AE10634E3100F39DCF /* launch.h */,
|
9C77E4AE10634E3100F39DCF /* launch.h */,
|
||||||
9C77E4AF10634E3100F39DCF /* libsubstrate.dylib */,
|
9C77E4AF10634E3100F39DCF /* libsubstrate.dylib */,
|
||||||
9C77E4B010634E3100F39DCF /* README */,
|
9C77E4B010634E3100F39DCF /* README */,
|
||||||
9C77E4B110634E3100F39DCF /* SpringBoard.h */,
|
|
||||||
9C77E4B210634E3100F39DCF /* substrate.h */,
|
9C77E4B210634E3100F39DCF /* substrate.h */,
|
||||||
);
|
);
|
||||||
path = 3rdparty;
|
path = 3rdparty;
|
||||||
@ -309,10 +307,10 @@
|
|||||||
9C00F86510191097008DAB17 /* utils.c in Sources */,
|
9C00F86510191097008DAB17 /* utils.c in Sources */,
|
||||||
9C00F87410191130008DAB17 /* l2cap_signaling.c in Sources */,
|
9C00F87410191130008DAB17 /* l2cap_signaling.c in Sources */,
|
||||||
9CCE6CEA1025BD0000FCE9F4 /* hci.c in Sources */,
|
9CCE6CEA1025BD0000FCE9F4 /* hci.c in Sources */,
|
||||||
9C6459E01037554B0081A00B /* platform_iphone.m in Sources */,
|
|
||||||
9C1813F81042FCCA00C68F09 /* mitm.c in Sources */,
|
9C1813F81042FCCA00C68F09 /* mitm.c in Sources */,
|
||||||
9C77E7511066680800F39DCF /* SpringBoardAccessExtension.mm in Sources */,
|
9C77E7511066680800F39DCF /* SpringBoardAccessExtension.mm in Sources */,
|
||||||
9C77E75510666B5D00F39DCF /* SpringBoardAccess.c in Sources */,
|
9C77E75510666B5D00F39DCF /* SpringBoardAccess.c in Sources */,
|
||||||
|
9C77E79210667F0600F39DCF /* platform_iphone.c in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -2,37 +2,42 @@ if HAVE_LIBUSB
|
|||||||
usb_support = hci_transport_usb.c
|
usb_support = hci_transport_usb.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if USE_SPRINGBOARD
|
||||||
|
springboard_support = ../SpringBoardAccess/SpringBoardAccess.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
bin_PROGRAMS = BTdaemon
|
bin_PROGRAMS = BTdaemon
|
||||||
BTdaemon_SOURCES = \
|
BTdaemon_SOURCES = \
|
||||||
bt_control_iphone.c \
|
bt_control_iphone.c \
|
||||||
daemon.c \
|
daemon.c \
|
||||||
hci.c \
|
hci.c \
|
||||||
hci_cmds.c \
|
hci_cmds.c \
|
||||||
hci_dump.c \
|
hci_dump.c \
|
||||||
hci_transport_h4.c \
|
hci_transport_h4.c \
|
||||||
$(usb_support) \
|
$(usb_support) \
|
||||||
l2cap.c \
|
l2cap.c \
|
||||||
l2cap_signaling.c \
|
l2cap_signaling.c \
|
||||||
platform_iphone.m \
|
platform_iphone.c \
|
||||||
linked_list.c \
|
linked_list.c \
|
||||||
run_loop.c \
|
run_loop.c \
|
||||||
socket_connection.c \
|
socket_connection.c \
|
||||||
|
$(springboard_support) \
|
||||||
utils.c
|
utils.c
|
||||||
|
|
||||||
include_HEADERS = \
|
include_HEADERS = \
|
||||||
bt_control.h \
|
bt_control.h \
|
||||||
bt_control_iphone.h \
|
bt_control_iphone.h \
|
||||||
hci.h \
|
hci.h \
|
||||||
hci_cmds.h \
|
hci_cmds.h \
|
||||||
hci_dump.h \
|
hci_dump.h \
|
||||||
hci_transport.h \
|
hci_transport.h \
|
||||||
hci_transport_h4.h \
|
hci_transport_h4.h \
|
||||||
hci_transport_usb.h \
|
hci_transport_usb.h \
|
||||||
linked_list.h \
|
linked_list.h \
|
||||||
l2cap.h \
|
l2cap.h \
|
||||||
l2cap_signaling.h \
|
l2cap_signaling.h \
|
||||||
platform_iphone.h \
|
platform_iphone.h \
|
||||||
run_loop.h \
|
run_loop.h \
|
||||||
socket_connection.h \
|
socket_connection.h \
|
||||||
utils.h
|
utils.h
|
||||||
|
@ -98,7 +98,7 @@ static hci_connection_t * connection_for_address(bd_addr_t address){
|
|||||||
* count connections
|
* count connections
|
||||||
*/
|
*/
|
||||||
static int nr_hci_connections(){
|
static int nr_hci_connections(){
|
||||||
int count;
|
int count = 0;
|
||||||
linked_item_t *it;
|
linked_item_t *it;
|
||||||
for (it = (linked_item_t *) hci_stack.connections; it ; it = it->next, count++);
|
for (it = (linked_item_t *) hci_stack.connections; it ; it = it->next, count++);
|
||||||
return count;
|
return count;
|
||||||
|
35
src/platform_iphone.c
Normal file
35
src/platform_iphone.c
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
//
|
||||||
|
// platform_iphone.c
|
||||||
|
//
|
||||||
|
// Created by Matthias Ringwald on 8/15/09.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "../config.h"
|
||||||
|
|
||||||
|
#include "platform_iphone.h"
|
||||||
|
|
||||||
|
#include "../SpringBoardAccess/SpringBoardAccess.h"
|
||||||
|
|
||||||
|
#ifdef USE_SPRINGBOARD
|
||||||
|
|
||||||
|
// update SpringBoard icons
|
||||||
|
void platform_iphone_status_handler(BLUETOOTH_STATE state){
|
||||||
|
switch (state) {
|
||||||
|
case BLUETOOTH_OFF:
|
||||||
|
SBA_removeStatusBarImage("BTstack");
|
||||||
|
SBA_removeStatusBarImage("BTstackActive");
|
||||||
|
break;
|
||||||
|
case BLUETOOTH_ON:
|
||||||
|
SBA_removeStatusBarImage("BTstackActive");
|
||||||
|
SBA_addStatusBarImage("BTstack");
|
||||||
|
break;
|
||||||
|
case BLUETOOTH_ACTIVE:
|
||||||
|
SBA_removeStatusBarImage("BTstack");
|
||||||
|
SBA_addStatusBarImage("BTstackActive");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
@ -1,45 +0,0 @@
|
|||||||
//
|
|
||||||
// platform_iphone.m
|
|
||||||
//
|
|
||||||
// Created by Matthias Ringwald on 8/15/09.
|
|
||||||
//
|
|
||||||
|
|
||||||
#include "../config.h"
|
|
||||||
|
|
||||||
#import "platform_iphone.h"
|
|
||||||
|
|
||||||
#ifdef USE_SPRINGBOARD
|
|
||||||
|
|
||||||
#ifdef __OBJC__
|
|
||||||
#import <Foundation/Foundation.h>
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@interface UIApplication (privateStatusBarIconAPI)
|
|
||||||
- (void)addStatusBarImageNamed:(id)fp8 removeOnAbnormalExit:(BOOL)fp12;
|
|
||||||
- (void)addStatusBarImageNamed:(id)fp8;
|
|
||||||
- (void)removeStatusBarImageNamed:(id)fp8;
|
|
||||||
// iPhoneOS >= 2.2
|
|
||||||
- (void)addStatusBarImageNamed:(id)fp8 removeOnExit:(BOOL)fp12;
|
|
||||||
@end
|
|
||||||
|
|
||||||
// update SpringBoard icon
|
|
||||||
void platform_iphone_status_handler(BLUETOOTH_STATE state){
|
|
||||||
printf("iphone state %u\n", state);
|
|
||||||
UIApplication *theApp = [UIApplication sharedApplication];
|
|
||||||
printf("the app %u\n", (int) theApp);
|
|
||||||
[theApp addStatusBarImageNamed:@"BluetoothActive"];
|
|
||||||
|
|
||||||
switch (state) {
|
|
||||||
case BLUETOOTH_OFF:
|
|
||||||
break;
|
|
||||||
case BLUETOOTH_ON:
|
|
||||||
break;
|
|
||||||
case BLUETOOTH_ACTIVE:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
x
Reference in New Issue
Block a user