pwm_write(); return sizeof(rgb); } /* WebBT Service Declaration */ static struct bt_gatt_attr attrs[] = { BT_GATT_PRIMARY_SERVICE(BT_UUID_WEBBT), /* Temperature */ BT_GATT_CHARACTERISTIC(BT_UUID_TEMP, BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY), BT_GATT_DESCRIPTOR(BT_UUID_TEMP, BT_GATT_PERM_READ, read_temperature, NULL, &temperature), BT_GATT_CUD(SENSOR_1_NAME, BT_GATT_PERM_READ), BT_GATT_CCC(blvl_ccc_cfg, blvl_ccc_cfg_changed), /* RGB Led */ BT_GATT_CHARACTERISTIC(BT_UUID_RGB, BT_GATT_CHRC_READ | BT_GATT_CHRC_WRITE), BT_GATT_DESCRIPTOR(BT_UUID_RGB, BT_GATT_PERM_READ | BT_GATT_PERM_WRITE, read_rgb, write_rgb, rgb), BT_GATT_CUD(SENSOR_2_NAME, BT_GATT_PERM_READ), }; void temperature_ipm_callback(void *context, uint32_t id, volatile void *data) { struct bt_conn *conn = (struct bt_conn *) context; switch(id) {
0x7A, 0x23, 0x52, 0x71, 0xF6, 0x7B, 0xD3, 0x89, 0xAA, 0x47, 0x02, 0x83, 0x18, 0xE9, 0xC9, 0x71); /* Characteristic UUID of solar power 0609E802-AFD2-4D56-B61C-12BA1F80CCB6 */ static struct bt_uuid_128 solar_power_uuid = BT_UUID_INIT_128( 0xB6, 0xCC, 0x80, 0x1F, 0xBA, 0x12, 0x1C, 0xB6, 0x56, 0x4D, 0xD2, 0xAF, 0x02, 0xE8, 0x09, 0x06); static struct bt_gatt_attr attrs[] = { BT_GATT_PRIMARY_SERVICE(&power_uuid), BT_GATT_CHARACTERISTIC(&consumption_power_uuid.uuid, BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY), BT_GATT_DESCRIPTOR(&consumption_power_uuid.uuid, BT_GATT_PERM_READ, read_u32, NULL, &consumption_value), BT_GATT_CUD(CONSUMPTION_CUD, BT_GATT_PERM_READ), BT_GATT_CCC(consumption_ccc_cfg, sensor_ccc_cfg_changed), BT_GATT_CHARACTERISTIC(&solar_power_uuid.uuid, BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY), BT_GATT_DESCRIPTOR(&solar_power_uuid.uuid, BT_GATT_PERM_READ, read_u32, NULL, &solar_value), BT_GATT_CUD(SOLAR_CUD, BT_GATT_PERM_READ), BT_GATT_CCC(solar_ccc_cfg, sensor_ccc_cfg_changed) }; static void bt_ready(int err) { if (err) { printk("Bluetooth init failed (err %d)\n", err); return;
{ const uint32_t *u32 = attr->user_data; uint32_t value = sys_cpu_to_le32(*u32); return bt_gatt_attr_read(conn, attr, buf, len, offset, &value, sizeof(value)); } static struct bt_gatt_attr attrs[] = { BT_GATT_PRIMARY_SERVICE(BT_UUID_ESS), BT_GATT_CHARACTERISTIC(BT_UUID_TEMPERATURE, BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY), BT_GATT_DESCRIPTOR(BT_UUID_TEMPERATURE, BT_GATT_PERM_READ, read_u16, NULL, &temp_value), BT_GATT_CUD(TEMPERATURE_CUD, BT_GATT_PERM_READ), BT_GATT_CCC(temp_ccc_cfg, sensor_ccc_cfg_changed), BT_GATT_CHARACTERISTIC(BT_UUID_HUMIDITY, BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY), BT_GATT_DESCRIPTOR(BT_UUID_HUMIDITY, BT_GATT_PERM_READ, read_u16, NULL, &humidity_value), BT_GATT_CUD(HUMIDITY_CUD, BT_GATT_PERM_READ), BT_GATT_CCC(humidity_ccc_cfg, sensor_ccc_cfg_changed), BT_GATT_CHARACTERISTIC(BT_UUID_PRESSURE, BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY), BT_GATT_DESCRIPTOR(BT_UUID_PRESSURE, BT_GATT_PERM_READ, read_u32, NULL, &pressure_value), BT_GATT_CUD(PRESSURE_CUD, BT_GATT_PERM_READ), BT_GATT_CCC(pressure_ccc_cfg, sensor_ccc_cfg_changed),