v2

Dependencies:   BLE_API mbed DOOR

Fork of DOOR by Aura-Tech Solutions

Committer:
peteratsl
Date:
Tue Nov 17 20:19:28 2015 +0000
Revision:
72:371bb75cdd1a
Parent:
71:468aa9135c41
v2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ktownsend 0:7613d21e5974 1 /* mbed Microcontroller Library
ktownsend 0:7613d21e5974 2 * Copyright (c) 2006-2013 ARM Limited
ktownsend 0:7613d21e5974 3 *
ktownsend 0:7613d21e5974 4 * Licensed under the Apache License, Version 2.0 (the "License");
ktownsend 0:7613d21e5974 5 * you may not use this file except in compliance with the License.
ktownsend 0:7613d21e5974 6 * You may obtain a copy of the License at
ktownsend 0:7613d21e5974 7 *
ktownsend 0:7613d21e5974 8 * http://www.apache.org/licenses/LICENSE-2.0
ktownsend 0:7613d21e5974 9 *
ktownsend 0:7613d21e5974 10 * Unless required by applicable law or agreed to in writing, software
ktownsend 0:7613d21e5974 11 * distributed under the License is distributed on an "AS IS" BASIS,
ktownsend 0:7613d21e5974 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ktownsend 0:7613d21e5974 13 * See the License for the specific language governing permissions and
ktownsend 0:7613d21e5974 14 * limitations under the License.
ktownsend 0:7613d21e5974 15 */
ktownsend 0:7613d21e5974 16
ktownsend 0:7613d21e5974 17 #include "mbed.h"
mbedAustin 53:f9ec2c7a47f5 18 #include "iBeaconService.h"
fallenfate 67:81b595625ce0 19 #include "UARTService.h"
peteratsl 72:371bb75cdd1a 20 #include "stdbool.h"
ktownsend 0:7613d21e5974 21
mbedAustin 56:56bc0cab3916 22 /**
peteratsl 69:bc2f5bfe5e33 23 * For this demo application, populate the beacon advertisement load
mbedAustin 56:56bc0cab3916 24 * with 2 AD structures: FLAG and MSD (manufacturer specific data).
mbedAustin 56:56bc0cab3916 25 *
mbedAustin 56:56bc0cab3916 26 * Reference:
mbedAustin 56:56bc0cab3916 27 * Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 11, 18
mbedAustin 56:56bc0cab3916 28 */
mbedAustin 56:56bc0cab3916 29
mbedAustin 50:7bc38f01d2d3 30 BLEDevice ble;
fallenfate 67:81b595625ce0 31 UARTService *uart;
mbedAustin 50:7bc38f01d2d3 32
mbedAustin 56:56bc0cab3916 33 /**
mbedAustin 56:56bc0cab3916 34 * The Beacon payload has the following composition:
mbedAustin 56:56bc0cab3916 35 * 128-Bit / 16byte UUID = E2 0A 39 F4 73 F5 4B C4 A1 2F 17 D1 AD 07 A9 61
mbedAustin 56:56bc0cab3916 36 * Major/Minor = 0x1122 / 0x3344
mbedAustin 56:56bc0cab3916 37 * Tx Power = 0xC8 = 200, 2's compliment is 256-200 = (-56dB)
mbedAustin 56:56bc0cab3916 38 *
mbedAustin 56:56bc0cab3916 39 * Note: please remember to calibrate your beacons
mbedAustin 56:56bc0cab3916 40 * TX Power for more accurate results.
mbedAustin 56:56bc0cab3916 41 */
rgrover1 57:9782cb35c494 42 const uint8_t uuid[] = {0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4,
fallenfate 68:4a8fdfe70ab3 43 0xA1, 0x2F, 0x17, 0xD1, 0xAD, 0x07, 0xA9, 0x62
rgrover1 57:9782cb35c494 44 };
mbedAustin 56:56bc0cab3916 45 uint16_t majorNumber = 1122;
peteratsl 72:371bb75cdd1a 46 uint16_t minorNumber = 3346;
mbedAustin 56:56bc0cab3916 47 uint16_t txPower = 0xC8;
peteratsl 69:bc2f5bfe5e33 48
peteratsl 69:bc2f5bfe5e33 49
peteratsl 69:bc2f5bfe5e33 50 const uint8_t b1_id = 0x01;
peteratsl 69:bc2f5bfe5e33 51 const uint8_t bA1_id = 0x31;
peteratsl 69:bc2f5bfe5e33 52
peteratsl 69:bc2f5bfe5e33 53
peteratsl 72:371bb75cdd1a 54 PinName sensor_pin = P0_5;
peteratsl 72:371bb75cdd1a 55 PinName trigger_pin = P0_10;
peteratsl 69:bc2f5bfe5e33 56
peteratsl 72:371bb75cdd1a 57 const _Bool turn_on = 0;
peteratsl 72:371bb75cdd1a 58 const _Bool turn_off = 1;
peteratsl 69:bc2f5bfe5e33 59
peteratsl 69:bc2f5bfe5e33 60 //setup led
peteratsl 69:bc2f5bfe5e33 61 DigitalOut led1(P0_19);
peteratsl 69:bc2f5bfe5e33 62
peteratsl 72:371bb75cdd1a 63 //setup digital ins/outs
peteratsl 72:371bb75cdd1a 64 DigitalIn digi_sensor(sensor_pin);
peteratsl 72:371bb75cdd1a 65 DigitalOut digi_trigger(trigger_pin);
peteratsl 69:bc2f5bfe5e33 66
peteratsl 72:371bb75cdd1a 67 //set interrupt pin
peteratsl 72:371bb75cdd1a 68 InterruptIn intrpt_sensor(sensor_pin);
peteratsl 69:bc2f5bfe5e33 69
fallenfate 67:81b595625ce0 70
fallenfate 67:81b595625ce0 71 void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason);
fallenfate 67:81b595625ce0 72 void onDataWritten(const GattCharacteristicWriteCBParams *params);
peteratsl 69:bc2f5bfe5e33 73 int flip(char value);
peteratsl 69:bc2f5bfe5e33 74 void testAll(void);
peteratsl 72:371bb75cdd1a 75 void signal_off(void);
peteratsl 72:371bb75cdd1a 76 void signal_on(void);
peteratsl 72:371bb75cdd1a 77
fallenfate 67:81b595625ce0 78 void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason)
fallenfate 67:81b595625ce0 79 {
fallenfate 67:81b595625ce0 80 ble.startAdvertising();
fallenfate 67:81b595625ce0 81 }
fallenfate 67:81b595625ce0 82
fallenfate 67:81b595625ce0 83 void onDataWritten(const GattCharacteristicWriteCBParams *params)
fallenfate 67:81b595625ce0 84 {
fallenfate 67:81b595625ce0 85
fallenfate 67:81b595625ce0 86 }
mbedAustin 56:56bc0cab3916 87
peteratsl 72:371bb75cdd1a 88 void signal_off(void)
peteratsl 72:371bb75cdd1a 89 {
peteratsl 72:371bb75cdd1a 90 digi_trigger = turn_off;
peteratsl 72:371bb75cdd1a 91 wait(.5);
peteratsl 72:371bb75cdd1a 92 //ble.updateCharacteristicValue(readChar.getValueHandle(),"OFF",sizeof("OFF"));
peteratsl 72:371bb75cdd1a 93 }
peteratsl 72:371bb75cdd1a 94
peteratsl 72:371bb75cdd1a 95 void signal_on(void)
peteratsl 72:371bb75cdd1a 96 {
peteratsl 72:371bb75cdd1a 97 digi_trigger = turn_on;
peteratsl 72:371bb75cdd1a 98 wait(.5);
peteratsl 72:371bb75cdd1a 99 }
peteratsl 72:371bb75cdd1a 100
peteratsl 72:371bb75cdd1a 101
ktownsend 0:7613d21e5974 102 int main(void)
ktownsend 0:7613d21e5974 103 {
peteratsl 69:bc2f5bfe5e33 104 /* initialize stuff */
peteratsl 69:bc2f5bfe5e33 105 led1 = 1;
peteratsl 69:bc2f5bfe5e33 106
fallenfate 67:81b595625ce0 107
Rohit Grover 11:6774f4827024 108 ble.init();
peteratsl 72:371bb75cdd1a 109 digi_trigger = turn_on;
peteratsl 72:371bb75cdd1a 110
fallenfate 67:81b595625ce0 111
fallenfate 67:81b595625ce0 112 ble.onDisconnection(disconnectionCallback);
fallenfate 67:81b595625ce0 113 ble.onDataWritten(onDataWritten);
fallenfate 67:81b595625ce0 114 uart = new UARTService(ble);
mbedAustin 56:56bc0cab3916 115 iBeaconService ibeacon(ble, uuid, majorNumber, minorNumber, txPower);
rgrover1 60:3034dc913ea1 116 ble.setAdvertisingInterval(1000); /* 1000ms. */
Rohit Grover 19:869d8c7306b4 117 ble.startAdvertising();
ktownsend 0:7613d21e5974 118
peteratsl 72:371bb75cdd1a 119 while(1)
peteratsl 72:371bb75cdd1a 120 {
peteratsl 72:371bb75cdd1a 121 intrpt_sensor.rise(&signal_on);
peteratsl 72:371bb75cdd1a 122 intrpt_sensor.fall(&signal_off);
mbedAustin 56:56bc0cab3916 123 ble.waitForEvent(); // allows or low power operation
ktownsend 0:7613d21e5974 124 }
Rohit Grover 10:391c1acf4b9d 125 }
peteratsl 69:bc2f5bfe5e33 126
peteratsl 69:bc2f5bfe5e33 127 void testAll(void)
peteratsl 69:bc2f5bfe5e33 128 {
peteratsl 69:bc2f5bfe5e33 129 for(int i=0; i<2; i++)
peteratsl 69:bc2f5bfe5e33 130 {
peteratsl 69:bc2f5bfe5e33 131 led1 = !led1;
peteratsl 72:371bb75cdd1a 132 digi_trigger = !digi_trigger;
peteratsl 69:bc2f5bfe5e33 133 wait(1);
peteratsl 69:bc2f5bfe5e33 134 }
peteratsl 69:bc2f5bfe5e33 135 }
peteratsl 69:bc2f5bfe5e33 136
peteratsl 69:bc2f5bfe5e33 137 void blinky(void)
peteratsl 69:bc2f5bfe5e33 138 {
peteratsl 69:bc2f5bfe5e33 139 for(int i=0; i<15; i++)
peteratsl 69:bc2f5bfe5e33 140 {
peteratsl 69:bc2f5bfe5e33 141 led1 = !led1;
peteratsl 69:bc2f5bfe5e33 142 wait(.3);
peteratsl 69:bc2f5bfe5e33 143 }
peteratsl 69:bc2f5bfe5e33 144 }
peteratsl 69:bc2f5bfe5e33 145
peteratsl 69:bc2f5bfe5e33 146 int flip(char value)
peteratsl 69:bc2f5bfe5e33 147 {
peteratsl 69:bc2f5bfe5e33 148 int ret = 0;
peteratsl 72:371bb75cdd1a 149 /*
peteratsl 69:bc2f5bfe5e33 150
peteratsl 69:bc2f5bfe5e33 151 switch(value)
peteratsl 69:bc2f5bfe5e33 152 {
peteratsl 71:468aa9135c41 153 // close door
peteratsl 69:bc2f5bfe5e33 154 case b1_id :
peteratsl 69:bc2f5bfe5e33 155 case bA1_id : led1 = !led1;
peteratsl 69:bc2f5bfe5e33 156 b1 = 1;
peteratsl 69:bc2f5bfe5e33 157 break;
peteratsl 71:468aa9135c41 158 // open door
peteratsl 69:bc2f5bfe5e33 159 case b2_id :
peteratsl 69:bc2f5bfe5e33 160 case bA2_id : led1 = !led1;
peteratsl 69:bc2f5bfe5e33 161 b1 = 0;
peteratsl 69:bc2f5bfe5e33 162 break;
peteratsl 69:bc2f5bfe5e33 163 // timed open 10 seconds
peteratsl 69:bc2f5bfe5e33 164 case b3_id :
peteratsl 69:bc2f5bfe5e33 165 case bA3_id : led1 = !led1;
peteratsl 71:468aa9135c41 166 b1 = 0;
peteratsl 69:bc2f5bfe5e33 167 wait(10);
peteratsl 71:468aa9135c41 168 b1 = 1;
peteratsl 69:bc2f5bfe5e33 169 break;
peteratsl 69:bc2f5bfe5e33 170 // light 1 on
peteratsl 69:bc2f5bfe5e33 171 case b4_id :
peteratsl 69:bc2f5bfe5e33 172 case bA4_id : led1 = !led1;
peteratsl 69:bc2f5bfe5e33 173 b2 = 0;
peteratsl 69:bc2f5bfe5e33 174 break;
peteratsl 69:bc2f5bfe5e33 175 // light 1 off
peteratsl 69:bc2f5bfe5e33 176 case b5_id :
peteratsl 69:bc2f5bfe5e33 177 case bA5_id : led1 = !led1;
peteratsl 69:bc2f5bfe5e33 178 b2 = 1;
peteratsl 69:bc2f5bfe5e33 179 break;
peteratsl 69:bc2f5bfe5e33 180 // light 2 on
peteratsl 69:bc2f5bfe5e33 181 case b6_id :
peteratsl 69:bc2f5bfe5e33 182 case bA6_id : led1 = !led1;
peteratsl 69:bc2f5bfe5e33 183 b3 = 0;
peteratsl 69:bc2f5bfe5e33 184 break;
peteratsl 69:bc2f5bfe5e33 185 // light 2 off
peteratsl 69:bc2f5bfe5e33 186 case b7_id :
peteratsl 69:bc2f5bfe5e33 187 case bA7_id : led1 = !led1;
peteratsl 69:bc2f5bfe5e33 188 b3 = 1;
peteratsl 69:bc2f5bfe5e33 189 break;
peteratsl 69:bc2f5bfe5e33 190 // light 3 on
peteratsl 69:bc2f5bfe5e33 191 case b8_id :
peteratsl 69:bc2f5bfe5e33 192 case bA8_id : led1 = !led1;
peteratsl 69:bc2f5bfe5e33 193 b4 = 0;
peteratsl 69:bc2f5bfe5e33 194 break;
peteratsl 69:bc2f5bfe5e33 195 // light 3 off
peteratsl 69:bc2f5bfe5e33 196 case b9_id :
peteratsl 69:bc2f5bfe5e33 197 case bA9_id : led1 = !led1;
peteratsl 69:bc2f5bfe5e33 198 b4 = 1;
peteratsl 69:bc2f5bfe5e33 199 break;
peteratsl 69:bc2f5bfe5e33 200
peteratsl 69:bc2f5bfe5e33 201 default : blinky();
peteratsl 69:bc2f5bfe5e33 202 ret = 1;
peteratsl 69:bc2f5bfe5e33 203 break;
peteratsl 69:bc2f5bfe5e33 204 }
peteratsl 72:371bb75cdd1a 205 */
peteratsl 69:bc2f5bfe5e33 206 return ret;
peteratsl 69:bc2f5bfe5e33 207 }