示例#1
0
    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) {
示例#2
0
			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;
示例#3
0
{
	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),