]> git.saurik.com Git - veency.git/commitdiff
Apparently, I never added any of SpringBoardAccess.
authorJay Freeman (saurik) <saurik@saurik.com>
Sun, 26 Jan 2014 23:02:08 +0000 (15:02 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Sun, 26 Jan 2014 23:02:08 +0000 (15:02 -0800)
SpringBoardAccess.c [new file with mode: 0644]
SpringBoardAccess.h [new file with mode: 0644]

diff --git a/SpringBoardAccess.c b/SpringBoardAccess.c
new file mode 100644 (file)
index 0000000..4fbce82
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2009 by Matthias Ringwald
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY MATTHIAS RINGWALD AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
+ * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+/*
+ *  SpringBoardAcess.c
+ *
+ *  Created by Matthias Ringwald on 9/20/09.
+ *
+ */
+
+#include "SpringBoardAccess.h"
+
+#import <CoreFoundation/CoreFoundation.h>
+
+static CFMessagePortRef springBoardAccessMessagePort = 0;
+
+
+static void SBA_refresh(){
+       // still valid
+       if (springBoardAccessMessagePort && !CFMessagePortIsValid(springBoardAccessMessagePort)){
+               CFRelease(springBoardAccessMessagePort);
+               springBoardAccessMessagePort = NULL;
+       }
+       // create new one
+       if (!springBoardAccessMessagePort) {
+               springBoardAccessMessagePort = CFMessagePortCreateRemote(NULL, CFSTR(SBA_MessagePortName));
+       }
+}
+
+int SBA_available(){
+       SBA_refresh();
+       if (springBoardAccessMessagePort) return 1;
+       return 0;
+}
+
+static int SBA_sendMessage(UInt8 cmd, UInt16 dataLen, UInt8 *data, CFDataRef *resultData){
+               
+       SBA_refresh();
+       
+       // well, won't work
+       if (!springBoardAccessMessagePort) {
+               return kCFMessagePortIsInvalid;
+       }
+       // create and send message
+       CFDataRef cfData = CFDataCreate(NULL, data, dataLen);
+       CFStringRef replyMode = NULL;
+       if (resultData) {
+               replyMode = kCFRunLoopDefaultMode;
+       }
+       int result = CFMessagePortSendRequest(springBoardAccessMessagePort, cmd, cfData, 1, 1, replyMode, resultData);
+       CFRelease(cfData);
+       return result;
+}
+
+int SBA_addStatusBarImage(char *name){
+       return SBA_sendMessage(SBAC_addStatusBarImage, strlen(name), (UInt8*) name, NULL);
+}
+
+int SBA_removeStatusBarImage(char *name){
+       return SBA_sendMessage(SBAC_removeStatusBarImage, strlen(name), (UInt8*) name, NULL);
+}
+
+int SBA_getBluetoothEnabled() {
+       CFDataRef cfData;
+       int result = SBA_sendMessage(SBAC_getBluetoothEnabled, 0, NULL, &cfData);
+       if (result == 0){
+               const uint8_t *data = CFDataGetBytePtr(cfData);
+               UInt16 dataLen = CFDataGetLength(cfData);
+               if (!dataLen) return -10;
+               if (data[0]) {
+                       result = 1;
+               } else {
+                       result = 0;
+               }
+               CFRelease(cfData);
+       } else {
+               // error talking to SpringBoardAccess
+               // well, assume it's off and hope for the best
+               result = 0;
+       }
+       return result;
+}
+
+int SBA_setBluetoothEnabled(int on){
+       uint8_t enabled = 0;
+       if (on) enabled = 1;
+       return SBA_sendMessage(SBAC_setBluetoothEnabled, 1, (UInt8*) &enabled, NULL);
+}
+
+
diff --git a/SpringBoardAccess.h b/SpringBoardAccess.h
new file mode 100644 (file)
index 0000000..8cb17fc
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2009 by Matthias Ringwald
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY MATTHIAS RINGWALD AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
+ * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+/*
+ *  SpringBoardAccess.h
+ *
+ *  Allows to add and remove images to/from status bar
+ *
+ *  The images must be installed in:
+ *  /System/Library/CoreServices/SpringBoard.app/
+ * 
+ *  Only the base name is required, e.g., Bluetooth instead of Default_Bluetooth.png
+ *  Created by Matthias Ringwald on 9/20/09.
+ *
+ */
+#pragma once
+
+#define SBA_MessagePortName "SpringBoardAccess"
+
+#define SBAC_nop
+#define SBAC_addStatusBarImage 1
+#define SBAC_removeStatusBarImage 2
+#define SBAC_getBluetoothEnabled 3
+#define SBAC_setBluetoothEnabled 4
+
+/**
+ * Enables named status bar icon in Springboard
+ * @returns CFMessagePortSendRequest error: 0 = ok
+ */
+int SBA_addStatusBarImage(char *name);
+
+/**
+ * Disables named status bar icon in Springboard
+ * @returns CFMessagePortSendRequest error: 0 = ok
+ */
+int SBA_removeStatusBarImage(char *name);
+
+/**
+ * Get Bluetoot enabled property
+ * @returns < 0 error: 0 = OFF, 1 = ON
+ */
+int SBA_getBluetoothEnabled();
+
+/**
+ * Set Bluetooth enable property: 0 for OFF, otherwise on
+ * @returns CFMessagePortSendRequest error: 0 = ok
+ */
+int SBA_setBluetoothEnabled(int on);
+
+/**
+ * Tests if SpringBoardAccess server is available
+ */
+int SBA_available();