void cell_send(struct cell *c, int port, void *msg) { cell_lock(c); struct message m = { port, msg }; mq_push(&c->mq, &m); cell_unlock(c); }
/*! @brief 充電状態を送信する。 @param[in] charging 充電中は true */ static void send_battery_charging( bool charging ) { if (!mq_push()) { entry_log( "error", "send_battery_charging" ) ; return; } // 加速度センサーが動いている場合には、一瞬止める orientation_service_pause(); mq_kv_set(KEY_ACTION, ACTION_EVENT); mq_kv_set(KEY_PROFILE, PROFILE_BATTERY); mq_kv_set(KEY_ATTRIBUTE, BATTERY_ATTRIBUTE_ON_CHARGING_CHANGE); mq_kv_set(KEY_PARAM_BATTERY_CHARGING, charging); send_message(); pebble_sniff_interval_normal(); entry_log( "send", "battery_charging" ) ; }
/*! @brief 充電容量を送信する。 @param[in] percent 充電容量(%) */ static void send_battery_percent( int percent ) { // 加速度センサーが動いている場合には、一瞬止める orientation_service_pause(); if (!mq_push()) { entry_log( "error", "send_battery_percent" ) ; return; } mq_kv_set(KEY_ACTION, ACTION_EVENT); mq_kv_set(KEY_PROFILE, PROFILE_BATTERY); mq_kv_set(KEY_ATTRIBUTE, BATTERY_ATTRIBUTE_ON_BATTERY_CHANGE); mq_kv_set(KEY_PARAM_BATTERY_LEVEL, percent); send_message(); pebble_sniff_interval_normal(); entry_log( "send", "send_battery_percent" ) ; }
/*! @brief 加速度の値を取得するコールバック関数。 @param[in] data 加速度データ @param[in] num_samples サンプル数 */ static void in_event_accel_handler(AccelData *data, uint32_t num_samples) { if (outbox_wait_flag != 0) { int32_t t = get_current_time(); if (t - last_event_time > 1500) { outbox_wait_flag = 0; } else { return ; } } if (!mq_push()) { entry_log( "error", "in_event_accel_handler" ); return; } int32_t t = get_current_time(); int32_t interval = t - last_event_time; last_event_time = t; pebble_sniff_interval_normal(); mq_kv_set(KEY_ACTION, ACTION_EVENT); mq_kv_set(KEY_PROFILE, PROFILE_DEVICE_ORIENTATION); mq_kv_set(KEY_ATTRIBUTE, DEVICE_ORIENTATION_ATTRIBUTE_ON_DEVICE_ORIENTATION); mq_kv_set(KEY_PARAM_DEVICE_ORIENTATION_X, data->x); mq_kv_set(KEY_PARAM_DEVICE_ORIENTATION_Y, data->y); mq_kv_set(KEY_PARAM_DEVICE_ORIENTATION_Z, data->z); mq_kv_set(KEY_PARAM_DEVICE_ORIENTATION_INTERVAL, interval); counter_for_log ++ ; { char title[ 20 ] ; snprintf( title, sizeof( title), "accel %d",counter_for_log ) ; char buf[ 30 ] ; snprintf( buf, sizeof( buf), "X%d Y%d Z%d", data->x, data->y, data->z ) ; replace_last_log( title, buf) ; } send_message(); }