// @file sns_gyro_rot_matrix.proto
//
// @brief Defines standard message types for the Gyro Rotation Matrix Sensors.
//
// @copyright
// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
//
// @details The GRM Sensor provides the gyro rotation vector
// ## Attribute Requirements:
// 1. SNS_STD_SENSOR_ATTRID_TYPE is "gyro_rot_matrix"
// 2. SNS_STD_SENSOR_ATTRID_RIGID_BODY: sns_std_sensor_rigid_body_type
// 3. SNS_STD_SENSOR_ATTRID_STREAM_TYPE as SNS_STD_SENSOR_STREAM_TYPE_STREAMING.
// 4. SNS_STD_SENSOR_ATTRID_API attribute contains "sns_gyro_rot_matrix.proto"
//
// ## Processing Stream Requests:
// Used to either request for a certain configuration of the Gyro Rotation Matrix Sensor or
// alter an already existing configuration of the Simulation Sensor
// Uses sns_std_sensor_config defined in sns_std_sensor.proto
// The message field definitions are as follows:
// - float sample_rate :
//    containing the required sample rate of the Gyro Rotation Matrix sensor in hertz
//
// ## Publishing Stream Events:
// Data event generated by the gyro rotation matrix.
// Uses sns_std_sensor_event message defined in sns_std_sensor.proto
// The data field of the sns_std_sensor_event message
// contains a float array of length 10 with the following definition
// 1. float data[0] to data[8]: 
//      - 3 by 3 Gyro Rotation Matrix output
//      Representing the rotation from previously sampled gyro values
//      to the current one.
//      - The matrix definition is as follows:
// 
//        `curr_gyro_XYZ[3X1] = gyro_rot_matrix[3X3] * prev_gyro_XYZ[3X1]`
//
//        @code
//        data[0] = gyro_rot_matrix[0,0]
//        data[1] = gyro_rot_matrix[0,1]
//        data[2] = gyro_rot_matrix[0,2]
//        data[3] = gyro_rot_matrix[1,0]
//        data[4] = gyro_rot_matrix[1,1]
//        data[5] = gyro_rot_matrix[1,2]
//        data[6] = gyro_rot_matrix[2,0]
//        data[7] = gyro_rot_matrix[2,1]
//        data[8] = gyro_rot_matrix[2,2]
//        @endcode
// 2. float data[9]:
//      Gyro Norm of the currently sampled gyro data
//      determined as the sum of squares of gyro on each of the axes
//        data[9] = curr_gyro_X^2 + curr_gyro_Y^2 + curr_gyro_Z^2
//        @endcode

syntax = "proto2";
import "nanopb.proto";
import "sns_std_sensor.proto";


// @brief Message IDs for GRM Sensor
enum sns_gyro_rot_matrix_msgid
{
  option (nanopb_enumopt).long_names = false;

  SNS_GYRO_ROT_MATRIX_MSGID_SNS_STD_SENSOR_EVENT = 1024;
}
