BTLE demo for MAXWSNENV.

Dependencies:   BLE_API BMP180 Si7020 mbed MaximBLE

Committer:
kgills
Date:
Fri Jul 10 21:28:56 2015 +0000
Revision:
0:f71931ae3db1
Adding MAXWSNENV_demo.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kgills 0:f71931ae3db1 1 /*******************************************************************************
kgills 0:f71931ae3db1 2 * Copyright (C) 2015 Maxim Integrated Products, Inc., All Rights Reserved.
kgills 0:f71931ae3db1 3 *
kgills 0:f71931ae3db1 4 * Permission is hereby granted, free of charge, to any person obtaining a
kgills 0:f71931ae3db1 5 * copy of this software and associated documentation files (the "Software"),
kgills 0:f71931ae3db1 6 * to deal in the Software without restriction, including without limitation
kgills 0:f71931ae3db1 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
kgills 0:f71931ae3db1 8 * and/or sell copies of the Software, and to permit persons to whom the
kgills 0:f71931ae3db1 9 * Software is furnished to do so, subject to the following conditions:
kgills 0:f71931ae3db1 10 *
kgills 0:f71931ae3db1 11 * The above copyright notice and this permission notice shall be included
kgills 0:f71931ae3db1 12 * in all copies or substantial portions of the Software.
kgills 0:f71931ae3db1 13 *
kgills 0:f71931ae3db1 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
kgills 0:f71931ae3db1 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
kgills 0:f71931ae3db1 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
kgills 0:f71931ae3db1 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
kgills 0:f71931ae3db1 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
kgills 0:f71931ae3db1 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
kgills 0:f71931ae3db1 20 * OTHER DEALINGS IN THE SOFTWARE.
kgills 0:f71931ae3db1 21 *
kgills 0:f71931ae3db1 22 * Except as contained in this notice, the name of Maxim Integrated
kgills 0:f71931ae3db1 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
kgills 0:f71931ae3db1 24 * Products, Inc. Branding Policy.
kgills 0:f71931ae3db1 25 *
kgills 0:f71931ae3db1 26 * The mere transfer of this software does not imply any licenses
kgills 0:f71931ae3db1 27 * of trade secrets, proprietary technology, copyrights, patents,
kgills 0:f71931ae3db1 28 * trademarks, maskwork rights, or any other form of intellectual
kgills 0:f71931ae3db1 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
kgills 0:f71931ae3db1 30 * ownership rights.
kgills 0:f71931ae3db1 31 *******************************************************************************
kgills 0:f71931ae3db1 32 */
kgills 0:f71931ae3db1 33
kgills 0:f71931ae3db1 34 #ifndef __BLE_LOCALTIMEINFOCHAR_H__
kgills 0:f71931ae3db1 35 #define __BLE_LOCALTIMEINFOCHAR_H__
kgills 0:f71931ae3db1 36
kgills 0:f71931ae3db1 37 #include "mbed.h"
kgills 0:f71931ae3db1 38 #include "Characteristic.h"
kgills 0:f71931ae3db1 39
kgills 0:f71931ae3db1 40 /**
kgills 0:f71931ae3db1 41 * @class LocalTimeInfoChar
kgills 0:f71931ae3db1 42 * @brief LocalTimeInfoChar characteristic class.
kgills 0:f71931ae3db1 43 * @details Sub class from the characteristic class.
kgills 0:f71931ae3db1 44 */
kgills 0:f71931ae3db1 45
kgills 0:f71931ae3db1 46 class LocalTimeInfoChar : public Characteristic
kgills 0:f71931ae3db1 47 {
kgills 0:f71931ae3db1 48 public:
kgills 0:f71931ae3db1 49
kgills 0:f71931ae3db1 50 typedef enum {
kgills 0:f71931ae3db1 51 UTC_N_1200 = -48,
kgills 0:f71931ae3db1 52 UTC_N_1100 = -44,
kgills 0:f71931ae3db1 53 UTC_N_1000 = -40,
kgills 0:f71931ae3db1 54 UTC_N_0930 = -38,
kgills 0:f71931ae3db1 55 UTC_N_0900 = -36,
kgills 0:f71931ae3db1 56 UTC_N_0800 = -32,
kgills 0:f71931ae3db1 57 UTC_N_0700 = -28,
kgills 0:f71931ae3db1 58 UTC_N_0600 = -24,
kgills 0:f71931ae3db1 59 UTC_N_0500 = -20,
kgills 0:f71931ae3db1 60 UTC_N_0430 = -18,
kgills 0:f71931ae3db1 61 UTC_N_0400 = -16,
kgills 0:f71931ae3db1 62 UTC_N_0330 = -14,
kgills 0:f71931ae3db1 63 UTC_N_0300 = -12,
kgills 0:f71931ae3db1 64 UTC_N_0200 = -8,
kgills 0:f71931ae3db1 65 UTC_N_0100 = -4,
kgills 0:f71931ae3db1 66 UTC_P_0000 = 0,
kgills 0:f71931ae3db1 67 UTC_P_0100 = 4,
kgills 0:f71931ae3db1 68 UTC_P_0200 = 8,
kgills 0:f71931ae3db1 69 UTC_P_0300 = 12,
kgills 0:f71931ae3db1 70 UTC_P_0330 = 14,
kgills 0:f71931ae3db1 71 UTC_P_0400 = 16,
kgills 0:f71931ae3db1 72 UTC_P_0430 = 18,
kgills 0:f71931ae3db1 73 UTC_P_0500 = 20,
kgills 0:f71931ae3db1 74 UTC_P_0530 = 22,
kgills 0:f71931ae3db1 75 UTC_P_0545 = 23,
kgills 0:f71931ae3db1 76 UTC_P_0600 = 24,
kgills 0:f71931ae3db1 77 UTC_P_0630 = 26,
kgills 0:f71931ae3db1 78 UTC_P_0700 = 28,
kgills 0:f71931ae3db1 79 UTC_P_0800 = 32,
kgills 0:f71931ae3db1 80 UTC_P_0845 = 35,
kgills 0:f71931ae3db1 81 UTC_P_0900 = 36,
kgills 0:f71931ae3db1 82 UTC_P_0930 = 38,
kgills 0:f71931ae3db1 83 UTC_P_1000 = 40,
kgills 0:f71931ae3db1 84 UTC_P_1030 = 42,
kgills 0:f71931ae3db1 85 UTC_P_1100 = 44,
kgills 0:f71931ae3db1 86 UTC_P_1130 = 46,
kgills 0:f71931ae3db1 87 UTC_P_1200 = 48,
kgills 0:f71931ae3db1 88 UTC_P_1245 = 51,
kgills 0:f71931ae3db1 89 UTC_P_1300 = 52,
kgills 0:f71931ae3db1 90 UTC_P_1400 = 56
kgills 0:f71931ae3db1 91 } time_zone_t;
kgills 0:f71931ae3db1 92
kgills 0:f71931ae3db1 93 typedef enum {
kgills 0:f71931ae3db1 94 standard = 0,
kgills 0:f71931ae3db1 95 half_daylight = 2,
kgills 0:f71931ae3db1 96 hour_daylignt = 4,
kgills 0:f71931ae3db1 97 double_daylight = 8,
kgills 0:f71931ae3db1 98 } dst_offset_t;
kgills 0:f71931ae3db1 99
kgills 0:f71931ae3db1 100 static const unsigned OFFSET_OF_TIMEZONE = 0;
kgills 0:f71931ae3db1 101 static const unsigned OFFSET_OF_DST = OFFSET_OF_TIMEZONE + 1;
kgills 0:f71931ae3db1 102
kgills 0:f71931ae3db1 103 static const unsigned CHAR_BYTES = OFFSET_OF_DST + 1;
kgills 0:f71931ae3db1 104
kgills 0:f71931ae3db1 105 LocalTimeInfoChar() :
kgills 0:f71931ae3db1 106 gattChar(GattCharacteristic::UUID_LOCAL_TIME_INFORMATION_CHAR, bytes,
kgills 0:f71931ae3db1 107 CHAR_BYTES, CHAR_BYTES,
kgills 0:f71931ae3db1 108 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ |
kgills 0:f71931ae3db1 109 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE)
kgills 0:f71931ae3db1 110 {
kgills 0:f71931ae3db1 111 // Default UTC time with no DST offset
kgills 0:f71931ae3db1 112 memset(bytes, 0x0, CHAR_BYTES);
kgills 0:f71931ae3db1 113 }
kgills 0:f71931ae3db1 114
kgills 0:f71931ae3db1 115 ~LocalTimeInfoChar() {}
kgills 0:f71931ae3db1 116
kgills 0:f71931ae3db1 117 virtual GattCharacteristic *getChar(void)
kgills 0:f71931ae3db1 118 {
kgills 0:f71931ae3db1 119 return &gattChar;
kgills 0:f71931ae3db1 120 }
kgills 0:f71931ae3db1 121
kgills 0:f71931ae3db1 122 virtual uint8_t getNumBytes(void)
kgills 0:f71931ae3db1 123 {
kgills 0:f71931ae3db1 124 return CHAR_BYTES;
kgills 0:f71931ae3db1 125 }
kgills 0:f71931ae3db1 126
kgills 0:f71931ae3db1 127 virtual uint8_t *getBytes(void)
kgills 0:f71931ae3db1 128 {
kgills 0:f71931ae3db1 129 return bytes;
kgills 0:f71931ae3db1 130 }
kgills 0:f71931ae3db1 131
kgills 0:f71931ae3db1 132 // Update the characteristic value for dst
kgills 0:f71931ae3db1 133 void update(dst_offset_t dst)
kgills 0:f71931ae3db1 134 {
kgills 0:f71931ae3db1 135 // Set DST
kgills 0:f71931ae3db1 136 bytes[OFFSET_OF_DST] = dst;
kgills 0:f71931ae3db1 137 }
kgills 0:f71931ae3db1 138
kgills 0:f71931ae3db1 139 // Update the characteristic value for time zone
kgills 0:f71931ae3db1 140 void update(time_zone_t time_zone)
kgills 0:f71931ae3db1 141 {
kgills 0:f71931ae3db1 142 // Set DST
kgills 0:f71931ae3db1 143 bytes[OFFSET_OF_TIMEZONE] = time_zone;
kgills 0:f71931ae3db1 144 }
kgills 0:f71931ae3db1 145
kgills 0:f71931ae3db1 146 private:
kgills 0:f71931ae3db1 147 GattCharacteristic gattChar;
kgills 0:f71931ae3db1 148 uint8_t bytes[CHAR_BYTES];
kgills 0:f71931ae3db1 149 };
kgills 0:f71931ae3db1 150
kgills 0:f71931ae3db1 151 #endif /* #ifndef __BLE_LOCALTIMEINFOCHAR_H__*/