// @file sns_fmv.proto
//
// @brief Defines the API for Filtered Magnetic Vector Sensors.
//
// @copyright
// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
//
// @details FMV sensor reports the filtered magnetic vector
// ## Attribute Requirements:
// 1. SNS_STD_SENSOR_ATTRID_TYPE is "fmv"
// 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_fmv.proto"
//
// ## Processing Stream Requests:
// sns_std_sensor_config::sample_rate is used to specify the sampling rate (Hz)
// of the FMV sensor. Sensor will generate data events at this rate.
//
// ## Publishing Stream Events:
// 1. Output of the FMV sensor will be populated in sns_std_sensor_event
// 2. Each stream event contains three output data fields in µT (micro Tesla)
// 3. Data in the stream is adjusted to Android coordinate system relative to a
//    mobile device held with screen facing the user in it's natural orientation:
//    X-axis: parallel to the screen pointing to the right
//    Y-axis: parallel to the screen pointing to the top
//    Z-axis: perpendicular to the screen pointing towards the user
// 4. Data in the stream event is ordered as: 
//    @code
//    data[0] = X-axis
//    data[1] = Y-axis
//    data[2] = Z-axis
//    @endcode
// 5. Each stream event publishes an accuracy field:
//    SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is
//    yet to stabilize after the sensor is configured.
//    SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid.
// 6. sns_std_sensor_event::status specifies the reliability of the sample value,
//    where value is of type sns_std_sensor_sample_status.

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

