示例#1
0
文件: hive_cell.c 项目: acmercyj/hive
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);
}
示例#2
0
/*!
 @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" ) ;
}
示例#3
0
/*!
 @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();
}