IPC Module - Accelerometer Service

This page contains documentation of the accelerometer part of IMU API.

According to the interface description, the values in the a_ipc_msg_accelerometer_publish_ind comes as an array of bytes. To be able to read out the actual values, these bytes need to be re-composed to an accelerometer_sample struct:

struct accelerometer_sample {
      int16_t x;
      int16_t y;
      int16_t z;
      int16_t pad;
      int64_t ts;
   } __attribute__ ((__packed__));

Here is an example of how to do this:

static void handle_publish_ind(a_ipc_msg* message)
{
   struct accelerometer_sample {
      int16_t x;
      int16_t y;
      int16_t z;
      int16_t pad;
      int64_t ts;
   } __attribute__ ((__packed__));

   struct accelerometer_sample* samples = (struct accelerometer_sample*)
      message->accelerometer_publish_ind.sample_buffer.value;

   int number_of_samples =
      message->accelerometer_publish_ind.sample_buffer.length /
      sizeof(struct accelerometer_sample);

   for (int i = 0; i < number_of_samples; i++)
   {
      printf("Received values (sample %d of %d):\n", i + 1, number_of_samples);
      printf("x: %i\n", samples[i].x);
      printf("y: %i\n", samples[i].y);
      printf("z: %i\n", samples[i].z);
      printf("time stamp: %lu\n", samples[i].ts);
   }

   exit_main_loop_with_return_code(0);
}

Messages

message accelerometer_request_req
Parameters:

user (string) – User identifier, max 15 characters long.

Return message:

accelerometer_request_rsp

Request the accelerometer service.

message accelerometer_request_rsp
Parameters:

result (enum accelerometer_result) – Result of the operation

Accelerometer request result.

message accelerometer_release_req_norsp
Parameters:

user (string) – User identifier, max 15 characters long.

Release accelerometer service for given user user.

message accelerometer_configure_wakeup_req
Parameters:

enabled (uint8)

Return message:

accelerometer_configure_wakeup_rsp

Enable/disable wakeup using the accelerometer.

message accelerometer_configure_wakeup_rsp
Parameters:

result (enum accelerometer_result)

Result of the wakeup configuration.

message accelerometer_configure_req
Parameters:
  • samplerate_sps (uint32) – Requested sample rate in samples per second

  • samples_per_buffer (uint32) – Number of samples per buffer

Return message:

accelerometer_configure_rsp

Request to configure the accelerometer service.

The supported values for samplerate and samples per buffer is board dependent and documented at IMU.

message accelerometer_configure_rsp
Parameters:

Sent in response to accelerometer_configure_req message.

message accelerometer_publish_ind
Parameters:
  • no_of_samples (uint32) – Number of samples included in sample buffer

  • sample_buffer (uint8[]) – The sample values

accelerometer data event.

message accelerometer_subscribe_req

Subscribe to accelerometer_publish_ind messages

message accelerometer_subscribe_rsp
Parameters:

result (enum ipc_subscribe_result)

Result from accelerometer_subscribe_req

message accelerometer_unsubscribe_req_norsp

Unsubscribe from accelerometer_publish_ind messages

Enums

enum accelerometer_result

Result codes

Constant

Value

Description

OK

0

OK

ERROR

1

Error