Beispiel #1
0
static void worker_message_handler(uint16_t type, AppWorkerMessage *data) {
	static AppWorkerMessage msg_data;
		switch(type) {
		case WORKER_MSG_ECHO:
#if !ECHO_CMDS			
			 // Construct a data packet
			msg_data.data0 = data->data0;
	  		// Send the data to the foreground app
			app_worker_send_message(WORKER_MSG_ECHO, &msg_data);
#endif			
		break;
		
		case WORKER_MSG_ACCEL_START:
			accel_data_service_subscribe(data->data0, worker_accel_data_handler);
			accel_service_set_sampling_rate(data->data1);
			worker_accel_enabled = true;
		break;
		
		case WORKER_MSG_ACCEL_STOP:
			accel_data_service_unsubscribe();
			worker_accel_enabled = false;
		break;
				
		case WORKER_MSG_ACCEL_MODIFY:
			accel_service_set_samples_per_update(data->data0);
			accel_service_set_sampling_rate(data->data1);
		break;
		
		case WORKER_MSG_TICK_START:
			if ( data->data0 != 0 ) 
				tickRate = data->data0; // how often do we want updates.
			tick_timer_service_subscribe(SECOND_UNIT, worker_tick_handler);
			worker_tick_enabled = true;
		break;
		
		case WORKER_MSG_TICK_STOP:
			tick_timer_service_unsubscribe();
			worker_tick_enabled = false;
		break;
			
		case WORKER_MSG_LOGGING_START:
			datalog_ref = data_logging_create(SLEEP_DATA_LOG_TAG, DATA_LOGGING_BYTE_ARRAY, sizeof(struct AccelData), true);
			worker_logging_enabled = true;
		break;
		
		case WORKER_MSG_LOGGING_STOP:
			data_logging_finish(datalog_ref);
			worker_logging_enabled = false;
		break;
			
		case WORKER_MSG_STATUS_RQST:
			worker_send_status_resp();
		break;
	}
	
#if ECHO_CMDS
	msg_data.data0 = type;
	app_worker_send_message(WORKER_MSG_ECHO,&msg_data);
#endif
}
void accel_logging_stop() {
  data_logging_finish(s_logging_session);
}
Beispiel #3
0
static void worker_deinit() {
  	data_logging_finish(datalog_ref);
	tick_timer_service_unsubscribe();
	accel_data_service_unsubscribe();
	app_worker_message_unsubscribe();
}
Beispiel #4
0
static void deinit(void) {
    
    data_logging_finish(accel_data_log);
    accel_data_service_unsubscribe();
    
}