| C:\Work\Diff\Releases\2.7.6\global-api-2.7.6\fca_global_api-master\protobufSrc\Global_Uconnect_Ext_PC.proto |  | C:\Work\Personal\Repositories\global-api\fca_global_api-master\protobufSrc\Global_Uconnect_Ext_PC.proto
--- | --- | --- | ---
| `/**` |  | `/**`
| `* <p class=proto-main>This API enables the SDP to configure the TBM for Parental Control data collection and notification.` |  | `* <p class=proto-main>This API enables the SDP to configure the TBM for Parental Control data collection and notification.`
| `* The feature supports notifying the vehicle owner with alerts for geofencing, curfew, speed, valet, and similar events.` |  | `* The feature supports notifying the vehicle owner with alerts for geofencing, curfew, speed, valet, and similar events.`
| `* </p>` |  | `* </p>`
| `*` |  | `*`
| `* <div class=proto-hier>` |  | `* <div class=proto-hier>`
| `* UconnectAny` |  | `* UconnectAny`
| `* |` |  | `* |`
| `* |---- <a href="#com.fca.uconnect.global.PCUpdateConfigRequest">PCUpdateConfigRequest</a>` |  | `* |---- <a href="#com.fca.uconnect.global.PCUpdateConfigRequest">PCUpdateConfigRequest</a>`
| `* |` |  | `* |`
| `* |---- <a href="#com.fca.uconnect.global.PCUpdateConfigResponse">PCUpdateConfigResponse</a>` |  | `* |---- <a href="#com.fca.uconnect.global.PCUpdateConfigResponse">PCUpdateConfigResponse</a>`
| `* |` |  | `* |`
| `* |---- <a href="#com.fca.uconnect.global.PCConfiguredAlertPublish">PCConfiguredAlertPublish</a>` |  | `* |---- <a href="#com.fca.uconnect.global.PCConfiguredAlertPublish">PCConfiguredAlertPublish</a>`
| `* |` |  | `* |`
| `* |---- <a href="#com.fca.uconnect.global.PCNotificationPublish">PCNotificationPublish</a>` |  | `* |---- <a href="#com.fca.uconnect.global.PCNotificationPublish">PCNotificationPublish</a>`
| `* |` |  | `* |`
| `* |---- <a href="#com.fca.uconnect.global.AckMessage">AckMessage</a>` |  | `* |---- <a href="#com.fca.uconnect.global.AckMessage">AckMessage</a>`
| `*` |  | `*`
| `* </div>` |  | `* </div>`
| `*` |  | `*`
| `* <h3 class=change-log-hdr> Change Log</h3>` |  | `* <h3 class=change-log-hdr> Change Log</h3>`
| `* <table id="change-log" class="change-log"><thead><tr>` |  | `* <table id="change-log" class="change-log"><thead><tr>`
| `* <td>Version</td><td>Date</td><td>Notes</td></tr></thead>` |  | `* <td>Version</td><td>Date</td><td>Notes</td></tr></thead>`
| `* <tbody>` |  | `* <tbody>`
| `` |  | `<tr><td>1.12</td<td>2019-01-20></td><td>Removed Deprecated from the response items to accomodate REPLACE method : Fixed mispelling OUT_OF_BOUNDRY to OUT_OF_BOUNDARY</td></tr>`
| `* <tr><td>1.10</td<td>2018-09-20></td><td><Added TripId to Speed and Drive Alerts /td></tr>` |  | `* <tr><td>1.10</td<td>2018-09-20></td><td><Added TripId to Speed and Drive Alerts /td></tr>`
| `* <tr><td>1.9</td<td>2018-09-20></td><td><Added BreachType Both and made corrections /td></tr>` |  | `* <tr><td>1.9</td<td>2018-09-20></td><td><Added BreachType Both and made corrections /td></tr>`
| `* <tr><td>1.8</td<td>2018-08-30></td><td><Added BreachType /td></tr>` |  | `* <tr><td>1.8</td<td>2018-08-30></td><td><Added BreachType /td></tr>`
| `* <tr><td>1.7</td<td>2018-08-21></td><td>Added a ConfigActionEnum to various alerts, added timestamp to logged events and utcoffset</td></tr>` |  | `* <tr><td>1.7</td<td>2018-08-21></td><td>Added a ConfigActionEnum to various alerts, added timestamp to logged events and utcoffset</td></tr>`
| `* <tr><td>1.6</td><td>2018-06-20</td><td>Added LogAlert to Conig</td></tr>` |  | `* <tr><td>1.6</td><td>2018-06-20</td><td>Added LogAlert to Conig</td></tr>`
| `<tr><td>1.5</td><td>2018-06-20</td><td>Update ConfigTypeVehicle, Added Logs Configuration and Uploads, added name to PC Config</td></tr>` |  | `<tr><td>1.5</td><td>2018-06-20</td><td>Update ConfigTypeVehicle, Added Logs Configuration and Uploads, added name to PC Config</td></tr>`
| `* <tr><td>1.4</td><td>2017-11-2</td><td>Update to Proto3</td></tr>` |  | `* <tr><td>1.4</td><td>2017-11-2</td><td>Update to Proto3</td></tr>`
| `* <tr><td>1.3</td><td>2017-09-27</td><td>Update configuration response.</td></tr>` |  | `* <tr><td>1.3</td><td>2017-09-27</td><td>Update configuration response.</td></tr>`
| `* <tr><td>1.2</td><td>2017-09-15</td><td>Added ACKMessage RadiusUnitsEnum.</td></tr>` |  | `* <tr><td>1.2</td><td>2017-09-15</td><td>Added ACKMessage RadiusUnitsEnum.</td></tr>`
| `* <tr><td>1.1</td><td>2017-04-19</td><td>Added RadiusUnitsEnum.</td></tr>` |  | `* <tr><td>1.1</td><td>2017-04-19</td><td>Added RadiusUnitsEnum.</td></tr>`
| `* <tr><td>1.0</td><td>2017-03-19</td><td>Release of initial Proto.</td></tr>` |  | `* <tr><td>1.0</td><td>2017-03-19</td><td>Release of initial Proto.</td></tr>`
| `* </tbody></table>` |  | `* </tbody></table>`
| `*` |  | `*`
| `* <h3 class=change-log-hdr>List of MQTT Topics</h3>` |  | `* <h3 class=change-log-hdr>List of MQTT Topics</h3>`
| `* <table class="change-log"><thead><tr>` |  | `* <table class="change-log"><thead><tr>`
| `* <td>Flow</td><td>Type</td><td>Topic Name</td></tr></thead>` |  | `* <td>Flow</td><td>Type</td><td>Topic Name</td></tr></thead>`
| `* <tbody>` |  | `* <tbody>`
| `* <tr><td>Cloud send to Vehicle</td><td>Publish</td><td>fcasp/${iot:ClientId}/PC</td></tr>` |  | `* <tr><td>Cloud send to Vehicle</td><td>Publish</td><td>fcasp/${iot:ClientId}/PC</td></tr>`
| `* <tr><td>Cloud receive from Vehicle</td><td>Subscribe</td><td>fcasp/PC/#</td></tr>` |  | `* <tr><td>Cloud receive from Vehicle</td><td>Subscribe</td><td>fcasp/PC/#</td></tr>`
| `* <tr><td>Vehicle send to Cloud </td><td>Publish</td><td>fcasp/PC/${iot:ClientId}</td></tr>` |  | `* <tr><td>Vehicle send to Cloud </td><td>Publish</td><td>fcasp/PC/${iot:ClientId}</td></tr>`
| `* <tr><td>Vehicle receive from Cloud </td><td>Subscribe</td><td>fcasp/${iot:ClientId}/#</td></tr>` |  | `* <tr><td>Vehicle receive from Cloud </td><td>Subscribe</td><td>fcasp/${iot:ClientId}/#</td></tr>`
| `* </tbody></table>` |  | `* </tbody></table>`
| `* <h3 class=change-log-hdr>Data Flow</h3>` |  | `* <h3 class=change-log-hdr>Data Flow</h3>`
| `* <p class=proto-main>The following sequence diagram depicts the flow of messages between the TBM and the SDP for regions that use PCConfiguredAlertPublish:</p>` |  | `* <p class=proto-main>The following sequence diagram depicts the flow of messages between the TBM and the SDP for regions that use PCConfiguredAlertPublish:</p>`
| `*` |  | `*`
| `* <img class=img-border src=./images/pc.png>` |  | `* <img class=img-border src=./images/pc.png>`
| `*` |  | `*`
| `* <table class=sequence-table><thead><tr>` |  | `* <table class=sequence-table><thead><tr>`
| `* <td>Seq</td><td>Title</td><td>Role</td><td>Message</td><td>Topic</td><td>Description</td></tr></thead>` |  | `* <td>Seq</td><td>Title</td><td>Role</td><td>Message</td><td>Topic</td><td>Description</td></tr></thead>`
| `* <tbody>` |  | `* <tbody>`
| `* <tr><td>1.</td><td>PC Provisioned Active Event</td><td>SDP</td><td></td><td></td><td><p>PC Provisioned active for Provisioning Push .</p></td></tr>` |  | `* <tr><td>1.</td><td>PC Provisioned Active Event</td><td>SDP</td><td></td><td></td><td><p>PC Provisioned active for Provisioning Push .</p></td></tr>`
| `* <tr><td></td><td>par</td><td></td><td></td><td></td><td><p>The interaction operator par defines potentially parallel execution of behaviors of the operands of the combined fragment. Different operands can be interleaved in any way as long as the ordering imposed by each operand is preserved.</p></td></tr>` |  | `* <tr><td></td><td>par</td><td></td><td></td><td></td><td><p>The interaction operator par defines potentially parallel execution of behaviors of the operands of the combined fragment. Different operands can be interleaved in any way as long as the ordering imposed by each operand is preserved.</p></td></tr>`
| `* <tr><td></td><td>async</td><td></td><td></td><td></td><td>The async means send message and proceed immediately without waiting for return value.<p></p></td></tr>` |  | `* <tr><td></td><td>async</td><td></td><td></td><td></td><td>The async means send message and proceed immediately without waiting for return value.<p></p></td></tr>`
| `* <tr><td>2.1</td><td>PCRequest Event</td><td>SDP<td></td><td></td><td><p>The SDP PC Request event which triggers to send an PCUpdateConfigRequest to the Client.</p></td></tr>` |  | `* <tr><td>2.1</td><td>PCRequest Event</td><td>SDP<td></td><td></td><td><p>The SDP PC Request event which triggers to send an PCUpdateConfigRequest to the Client.</p></td></tr>`
| `* <tr><td>2.2</td><td>Assign MessageId</td><td>SDP</td><td></td><td></td><td><p>The SDP generates the messageId for the message by incrementing a sequence counter.</p></td></tr>` |  | `* <tr><td>2.2</td><td>Assign MessageId</td><td>SDP</td><td></td><td></td><td><p>The SDP generates the messageId for the message by incrementing a sequence counter.</p></td></tr>`
| `* <tr><td>2.3</td><td>Send PCUpdateConfigRequest Message</td><td>SDP</td><td>PCUpdateConfigRequest</td><td>${iot:ClientId}/PC</td><td><p>The SDP populates the PCUpdateConfigRequest Message with the required elements and publishes to the PC topic.</p></td></tr>` |  | `* <tr><td>2.3</td><td>Send PCUpdateConfigRequest Message</td><td>SDP</td><td>PCUpdateConfigRequest</td><td>${iot:ClientId}/PC</td><td><p>The SDP populates the PCUpdateConfigRequest Message with the required elements and publishes to the PC topic.</p></td></tr>`
| `* <tr><td>2.4</td><td>Process Message</td><td>TBM</td><td></td><td></td><td><p>The Client processes the message and generates an PCUpdateConfigResponse Message with the status and the correlationId set to the messageId from the received PCUpdateConfigRequest Message.</p></td></tr>` |  | `* <tr><td>2.4</td><td>Process Message</td><td>TBM</td><td></td><td></td><td><p>The Client processes the message and generates an PCUpdateConfigResponse Message with the status and the correlationId set to the messageId from the received PCUpdateConfigRequest Message.</p></td></tr>`
| `* <tr><td>2.5</td><td>Assign CorrelationID</td><td>TBM</td><td></td><td></td><td><p>The correlationId set to the messageId from the received PCUpdateConfigRequest Message.</p></td></tr>` |  | `* <tr><td>2.5</td><td>Assign CorrelationID</td><td>TBM</td><td></td><td></td><td><p>The correlationId set to the messageId from the received PCUpdateConfigRequest Message.</p></td></tr>`
| `* <tr><td>2.6</td><td>Send PCUpdateConfigResponse Message</td><td>TBM</td><td>PCUpdateConfigResponse</td><td>/PC/${iot:ClientId}</td><td><p>The Client publishes the response message to the PC topic for the SDP to receive.</p></td></tr>` |  | `* <tr><td>2.6</td><td>Send PCUpdateConfigResponse Message</td><td>TBM</td><td>PCUpdateConfigResponse</td><td>/PC/${iot:ClientId}</td><td><p>The Client publishes the response message to the PC topic for the SDP to receive.</p></td></tr>`
| `* <tr><td>2.7</td><td>Process Response</td><td>SDP</td><td></td><td></td><td><p>The SDP receives the message and verifies the correlationId matches the messageId of the sent request.</p></td></tr>` |  | `* <tr><td>2.7</td><td>Process Response</td><td>SDP</td><td></td><td></td><td><p>The SDP receives the message and verifies the correlationId matches the messageId of the sent request.</p></td></tr>`
| `* <tr><td>3.1</td><td>Trigger Event</td><td>TBM</td><td></td><td></td><td><p>Once the PC is Configured after the appropriate out of band approval steps, the Client will build a new PCConfiguredAlertPublish Message with the required elements. </p></td></tr>` |  | `* <tr><td>3.1</td><td>Trigger Event</td><td>TBM</td><td></td><td></td><td><p>Once the PC is Configured after the appropriate out of band approval steps, the Client will build a new PCConfiguredAlertPublish Message with the required elements. </p></td></tr>`
| `* <tr><td>3.2</td><td>Send PCConfiguredAlertPublish Message</td><td>TBM</td><td><p>PCConfiguredAlertPublish</td><td>/PC/${iot:ClientId}</td><td>The Client publishes the PCConfiguredAlertPublish message to the PC topic for the SDP to receive.</p></td></tr>` |  | `* <tr><td>3.2</td><td>Send PCConfiguredAlertPublish Message</td><td>TBM</td><td><p>PCConfiguredAlertPublish</td><td>/PC/${iot:ClientId}</td><td>The Client publishes the PCConfiguredAlertPublish message to the PC topic for the SDP to receive.</p></td></tr>`
| `* <tr><td>3.3</td><td>Process ConfiguredAlert</td><td>SDP</td><td></td><td></td><td><p>The SDP receives the message and process configured Alert.</p></td></tr>` |  | `* <tr><td>3.3</td><td>Process ConfiguredAlert</td><td>SDP</td><td></td><td></td><td><p>The SDP receives the message and process configured Alert.</p></td></tr>`
| `* <tr><td>4.1</td><td>Send PCLogUploads Message</td><td>TBM</td><td><p>PCLogUploads</td><td>/PC/${iot:ClientId}</td><td>The Client publishes the configured and required logs via this message</p></td></tr>` |  | `* <tr><td>4.1</td><td>Send PCLogUploads Message</td><td>TBM</td><td><p>PCLogUploads</td><td>/PC/${iot:ClientId}</td><td>The Client publishes the configured and required logs via this message</p></td></tr>`
| `* <tr><td>4.2</td><td>Process Logs</td><td>SDP</td><td></td><td></td><td><p>The SDP receives the message and process the logs.</p></td></tr>` |  | `* <tr><td>4.2</td><td>Process Logs</td><td>SDP</td><td></td><td></td><td><p>The SDP receives the message and process the logs.</p></td></tr>`
| `* <tr><td>4.3</td><td>Process Logs</td><td>SDP</td><td></td><td></td><td><p>Ack Message returned.</p></td></tr>` |  | `* <tr><td>4.3</td><td>Process Logs</td><td>SDP</td><td></td><td></td><td><p>Ack Message returned.</p></td></tr>`
| `* </tbody>` |  | `* </tbody>`
| `* </table>` |  | `* </table>`
| `*` |  | `*`
| `*` |  | `*`
| `**/` |  | `**/`
| `` |  | ``
| `syntax="proto3";` |  | `syntax="proto3";`
| `package com.fca.uconnect.global;` |  | `package com.fca.uconnect.global;`
| `` |  | ``
| `` |  | ``
| `// import public "Global_Uconnect_Control.proto";` |  | `// import public "Global_Uconnect_Control.proto";`
| `import public "Global_Uconnect_VehicleInfo.proto";` |  | `import public "Global_Uconnect_VehicleInfo.proto";`
| `import public "Global_Uconnect_GNSS.proto";` |  | `import public "Global_Uconnect_GNSS.proto";`
| `` |  | ``
| `/**` |  | `/**`
| `* This message represents PCUpdateConfigRequest which triggers from SDP.` |  | `* This message represents PCUpdateConfigRequest which triggers from SDP.`
| `* <div class=exmsg-main>` |  | `* <div class=exmsg-main>`
| `* <h4>PCUpdateConfigRequest Example Message:</h4>` |  | `* <h4>PCUpdateConfigRequest Example Message:</h4>`
| `* <div class=ex-msg>` |  | `* <div class=ex-msg>`
| `* <code>` |  | `* <code>`
| `* timestamp: 1490711212633` |  | `* timestamp: 1490711212633`
| `* messageId: 11` |  | `* messageId: 11`
| `* messages` |  | `* messages`
| `* {` |  | `* {`
| `* [com.fca.uconnect.global.pcUpdateConfigRequest]` |  | `* [com.fca.uconnect.global.pcUpdateConfigRequest]`
| `* {` |  | `* {`
| `* configTypeVehicle` |  | `* configTypeVehicle`
| `* {` |  | `* {`
| `* speedAlerts` |  | `* speedAlerts`
| `* {` |  | `* {`
| `* beginTime: 1000` |  | `* beginTime: 1000`
| `* endTime: 10000` |  | `* endTime: 10000`
| `* activeDaysOfWeek: 1` |  | `* activeDaysOfWeek: 1`
| `* activeDaysOfWeek: 2` |  | `* activeDaysOfWeek: 2`
| `* thresholdAbovePostedSpeed: 60` |  | `* thresholdAbovePostedSpeed: 60`
| `* thresholdPostedSpeedAbsent: 80` |  | `* thresholdPostedSpeedAbsent: 80`
| `* thresholdAbsolute: 70` |  | `* thresholdAbsolute: 70`
| `* }` |  | `* }`
| `* updateSpeedAlertConfig: true` |  | `* updateSpeedAlertConfig: true`
| `* }` |  | `* }`
| `* }` |  | `* }`
| `* }` |  | `* }`
| `* </code>` |  | `* </code>`
| `* </div>` |  | `* </div>`
| `* </div>` |  | `* </div>`
| `*/` |  | `*/`
| `message PCUpdateConfigRequest {` |  | `message PCUpdateConfigRequest {`
| `` |  | ``
| `/**` |  | `/**`
| `* Set of rules used by the TBM to generate asynchronous alerts based on time, position and vehicle behavior.` |  | `* Set of rules used by the TBM to generate asynchronous alerts based on time, position and vehicle behavior.`
| `* Each message may be a complete set of configuration data, or may use the boolean 'update' fields to update only particular configuration types.` |  | `* Each message may be a complete set of configuration data, or may use the boolean 'update' fields to update only particular configuration types.`
| `* For each alert type, send the complete list of up to 5 alerts each time you submit.` |  | `* For each alert type, send the complete list of up to 5 alerts each time you submit.`
| `If a particular alert identifier is present in the one message and absent in the next, it should be removed. The exception is ValetAlerts` |  | `If a particular alert identifier is present in the one message and absent in the next, it should be removed. The exception is ValetAlerts`
| `* as there is only one ValetAlert, use the isEnabled boolean to enable and disable.` |  | `* as there is only one ValetAlert, use the isEnabled boolean to enable and disable.`
| `*/` |  | `*/`
| `` |  | ``
| `/** message config {` |  | `/** message config {`
| `ConfigTypeVehicle configTypeVehicle = 1; /// supported in NAFTA` |  | `ConfigTypeVehicle configTypeVehicle = 1; /// supported in NAFTA`
| `// ConfigTypeSDP configTypeSDP = 2; /// supported in EMEA, APAC` |  | `// ConfigTypeSDP configTypeSDP = 2; /// supported in EMEA, APAC`
| `}` |  | `}`
| `*/` |  | `*/`
| `` |  | ``
| `ConfigTypeVehicle config = 1;` |  | `ConfigTypeVehicle config = 1;`
| `}` |  | `}`
| `` |  | ``
| `message ConfigTypeVehicle {` |  | `message ConfigTypeVehicle {`
| `` |  | ``
| `message LogAlerts {` |  | `message LogAlerts {`
| `` |  | `//string name = 13;`
| `` |  | `//string identifier = 14;`
| `bool TripLog = 10;` |  | `bool TripLog = 10;`
| `bool DriveStyle = 11;` |  | `bool DriveStyle = 11;`
| `bool SpeedViolationReport = 12;` |  | `bool SpeedViolationReport = 12;`
| `}` |  | `}`
| `message CurfewAlertConfig {` |  | `message CurfewAlertConfig {`
| `string name = 6; /// Display text name for the configuration` |  | `string name = 6; /// Display text name for the configuration`
| `string identifier = 1; /// the identifier of the config that was triggered will be put in the generated alert` |  | `string identifier = 1; /// the identifier of the config that was triggered will be put in the generated alert`
| `int32 beginTime = 2; /// seconds after midnight` |  | `int32 beginTime = 2; /// seconds after midnight`
| `int32 endTime = 3; /// seconds after midnight` |  | `int32 endTime = 3; /// seconds after midnight`
| `repeated int32 activeDaysOfWeek = 4; /// 0 == Sunday, 1 == Monday ...` |  | `repeated int32 activeDaysOfWeek = 4; /// 0 == Sunday, 1 == Monday ...`
| `bool recurringAlert = 5; /// should happen only once or recurring.` |  | `bool recurringAlert = 5; /// should happen only once or recurring.`
| `ConfigActionEnum configAction = 7;` |  | `ConfigActionEnum configAction = 7;`
| `}` |  | `}`
| `` |  | ``
| `message SpeedAlertConfig {` |  | `message SpeedAlertConfig {`
| `string name = 10; /// Display text name for the configuration` |  | `string name = 10; /// Display text name for the configuration`
| `string identifier = 1; /// the identifier of the config that was triggered will be put in the generated alert` |  | `string identifier = 1; /// the identifier of the config that was triggered will be put in the generated alert`
| `int32 beginTime = 2; /// seconds after midnight` |  | `int32 beginTime = 2; /// seconds after midnight`
| `int32 endTime = 3; /// seconds after midnight` |  | `int32 endTime = 3; /// seconds after midnight`
| `repeated int32 activeDaysOfWeek = 4; /// 0 == Sunday, 1 == Monday ...` |  | `repeated int32 activeDaysOfWeek = 4; /// 0 == Sunday, 1 == Monday ...`
| `int32 thresholdAbovePostedSpeed = 5; /// if posted speed is available from Nav, alert if speed > thresholdAbovePostedSpeed + posted` |  | `int32 thresholdAbovePostedSpeed = 5; /// if posted speed is available from Nav, alert if speed > thresholdAbovePostedSpeed + posted`
| `int32 thresholdPostedSpeedAbsent = 6; /// if nav present but posted speed currently not valid alert if speed > thresholdPostedSpeedAbsent` |  | `int32 thresholdPostedSpeedAbsent = 6; /// if nav present but posted speed currently not valid alert if speed > thresholdPostedSpeedAbsent`
| `int32 thresholdAbsolute = 7; /// alert if speed > thresholdAbsolute, unless nav is present and posted speed is available and speed <= thresholdAbovePostedSpeed + posted` |  | `int32 thresholdAbsolute = 7; /// alert if speed > thresholdAbsolute, unless nav is present and posted speed is available and speed <= thresholdAbovePostedSpeed + posted`
| `bool recurringAlert = 8; /// should happen only once or recurring.` |  | `bool recurringAlert = 8; /// should happen only once or recurring.`
| `ConfigActionEnum configAction = 11;` |  | `ConfigActionEnum configAction = 11;`
| `UnitOfMeasure unitOfMeasure = 9;` |  | `UnitOfMeasure unitOfMeasure = 9;`
| `}` |  | `}`
| `` |  | ``
| `` |  | ``
| `message ValetAlertConfig {` |  | `message ValetAlertConfig {`
| `bool isEnabled = 8; /// Enable or disable this alert` |  | `bool isEnabled = 8; /// Enable or disable this alert`
| `string identifier = 1; /// the identifier of the config that was triggered will be put in the generated alert` |  | `string identifier = 1; /// the identifier of the config that was triggered will be put in the generated alert`
| `bool Activate = 7; /// 0 deactivates and 1 activates` |  | `bool Activate = 7; /// 0 deactivates and 1 activates`
| `float alertRadius = 5;/// Radius Units (i.e 1.2)` |  | `float alertRadius = 5;/// Radius Units (i.e 1.2)`
| `ConfigActionEnum configAction = 9;` |  | `ConfigActionEnum configAction = 9;`
| `UnitOfMeasure radiusUnitsEnum = 6;/// This represents whether alertRadius is in miles or kilometers.` |  | `UnitOfMeasure radiusUnitsEnum = 6;/// This represents whether alertRadius is in miles or kilometers.`
| `` |  | ``
| `}` |  | `}`
| `` |  | ``
| `` |  | ``
| `` |  | ``
| `message GeoFenceAlertConfig {` |  | `message GeoFenceAlertConfig {`
| `string name = 11; /// Display text name for the configuration` |  | `string name = 11; /// Display text name for the configuration`
| `string identifier = 1; /// the identifier of the config that was triggered will be put in the generated alert` |  | `string identifier = 1; /// the identifier of the config that was triggered will be put in the generated alert`
| `int32 beginTime = 2; /// seconds after midnight.` |  | `int32 beginTime = 2; /// seconds after midnight.`
| `int32 endTime = 3; /// seconds after midnight` |  | `int32 endTime = 3; /// seconds after midnight`
| `GeoFenceType geoFenceTypeEnum = 10; ///` |  | `GeoFenceType geoFenceTypeEnum = 10; ///`
| `repeated int32 activeDaysOfWeek = 4; /// 0 == Sunday, 1 == Monday ...` |  | `repeated int32 activeDaysOfWeek = 4; /// 0 == Sunday, 1 == Monday ...`
| `repeated Location boundaryPoints = 5;` |  | `repeated Location boundaryPoints = 5;`
| `Location radiusCenter = 7; /// Center Location for Radius Fence` |  | `Location radiusCenter = 7; /// Center Location for Radius Fence`
| `float Radius = 8; /// Radius for Radius Fence` |  | `float Radius = 8; /// Radius for Radius Fence`
| `UnitOfMeasure radiusUnitsEnum = 6;/// This represents whether alertRadius is in miles or kilometers.` |  | `UnitOfMeasure radiusUnitsEnum = 6;/// This represents whether alertRadius is in miles or kilometers.`
| `bool recurringAlert = 9; /// should happen only once or recurring.` |  | `bool recurringAlert = 9; /// should happen only once or recurring.`
| `BreachTypeEnum breachType = 12; // Only used for responses, not used to configure` |  | `BreachTypeEnum breachType = 12; // Only used for responses, not used to configure`
| `ConfigActionEnum configAction = 13;` |  | `ConfigActionEnum configAction = 13;`
| `}` |  | `}`
| `` |  | ``
| `` |  | ``
| `enum BreachTypeEnum {` |  | `enum BreachTypeEnum {`
| `DEFAULT = 0;` |  | `DEFAULT = 0;`
| `OUT_OF_BOUNDRY = 1;` |  | `OUT_OF_BOUNDARY = 1;`
| `IN_BOUNDARY = 2;` |  | `IN_BOUNDARY = 2;`
| `BOTH = 3;` |  | `BOTH = 3;`
| `` |  | ``
| `}` |  | `}`
| `enum UnitOfMeasure {` |  | `enum UnitOfMeasure {`
| `KILOMETERS = 0; // Default Value` |  | `KILOMETERS = 0; // Default Value`
| `MILES = 1; // // Miles Per Hour` |  | `MILES = 1; // // Miles Per Hour`
| `}` |  | `}`
| `` |  | ``
| `` |  | ``
| `` |  | ``
| `enum GeoFenceType {` |  | `enum GeoFenceType {`
| `Polygon = 0;` |  | `Polygon = 0;`
| `Radius =1;` |  | `Radius =1;`
| `}` |  | `}`
| `` |  | ``
| `enum ConfigActionEnum {` |  | `enum ConfigActionEnum {`
| `DEFAULTACTION = 0;` |  | `DEFAULTACTION = 0;`
| `ADD = 1;` |  | `ADD = 1;`
| `DELETE = 2;` |  | `DELETE = 2;`
| `UPDATE = 3;` |  | `UPDATE = 3;`
| `//REPLACE =4;` |  | `//REPLACE =4;`
| `}` |  | `}`
| `` |  | ``
| `` |  | ``
| `` |  | ``
| `LogAlerts logAlerts = 8; /// Configure Log Alerts` |  | `LogAlerts logAlerts = 8; /// Configure Log Alerts`
| `repeated CurfewAlertConfig curfewAlerts = 1; /// 0 to 5 ranges` |  | `repeated CurfewAlertConfig curfewAlerts = 1; /// 0 to 5 ranges`
| `// bool updateCurfewAlertConfig = 2; /// If false, this message should not update curfewAlerts.` |  | `// bool updateCurfewAlertConfig = 2; /// If false, this message should not update curfewAlerts.`
| `repeated SpeedAlertConfig speedAlerts = 3; /// 0 to 5 ranges` |  | `repeated SpeedAlertConfig speedAlerts = 3; /// 0 to 5 ranges`
| `// bool updateSpeedAlertConfig = 4; /// If false, this message should not update speedAlerts.` |  | `// bool updateSpeedAlertConfig = 4; /// If false, this message should not update speedAlerts.`
| `ValetAlertConfig valetAlert = 5; /// 0 or 1 configurations` |  | `ValetAlertConfig valetAlert = 5; /// 0 or 1 configurations`
| `// bool updateValetAlertConfig = 6; /// If false, this message should not update valetAlert.` |  | `// bool updateValetAlertConfig = 6; /// If false, this message should not update valetAlert.`
| `repeated GeoFenceAlertConfig geoFenceAlerts = 7; /// If exactly one GeoFenceAlert is sent, begin and end time may both be set to zero to indicate the boundary is always active` |  | `repeated GeoFenceAlertConfig geoFenceAlerts = 7; /// If exactly one GeoFenceAlert is sent, begin and end time may both be set to zero to indicate the boundary is always active`
| `// bool updateGeoFenceAlertConfig = 8; /// If false, this message should not update geoFenceAlerts.` |  | `// bool updateGeoFenceAlertConfig = 8; /// If false, this message should not update geoFenceAlerts.`
| `` |  | ``
| `}` |  | `}`
| `` |  | ``
| `` |  | ``
| `` |  | ``
| `/** message ConfigTypeSDP {` |  | `/** message ConfigTypeSDP {`
| `bool enablePositionSending = 1; /// send position updates if true` |  | `bool enablePositionSending = 1; /// send position updates if true`
| `int32 positionSendingFrequency = 2; /// interval in seconds between position updates, ignored if enablePositionSending is false` |  | `int32 positionSendingFrequency = 2; /// interval in seconds between position updates, ignored if enablePositionSending is false`
| `int32 positionSendingActiveFrequency = 4; /// if enablePositionSending is on, the TBM shall notify the HU/IPC at this interval in seconds` |  | `int32 positionSendingActiveFrequency = 4; /// if enablePositionSending is on, the TBM shall notify the HU/IPC at this interval in seconds`
| `bool enableSpeedSending = 5; /// enable or disable periodic sending of speed` |  | `bool enableSpeedSending = 5; /// enable or disable periodic sending of speed`
| `int32 speedSendingFrequency = 6; /// interval in seconds between speed updates, ignored if enableSpeedSending is false` |  | `int32 speedSendingFrequency = 6; /// interval in seconds between speed updates, ignored if enableSpeedSending is false`
| `float harshAccelerationThreshold = 7; /// alert if positive acceleration is greater than this value, in m/s^2. Ignored if less than or equal to 0.0f;` |  | `float harshAccelerationThreshold = 7; /// alert if positive acceleration is greater than this value, in m/s^2. Ignored if less than or equal to 0.0f;`
| `float harshBrakingThreshold = 8; /// alert if negative acceleration is below this value, in m/s^2. Ignored if greater than or equal to 0.0f;` |  | `float harshBrakingThreshold = 8; /// alert if negative acceleration is below this value, in m/s^2. Ignored if greater than or equal to 0.0f;`
| `float suddenCorneringThreshold = 9; /// vehicle acceleration Y Threshold. alert if negative acceleration is below this value, in m/s^2. Ignored if greater than or equal to 0.0f;` |  | `float suddenCorneringThreshold = 9; /// vehicle acceleration Y Threshold. alert if negative acceleration is below this value, in m/s^2. Ignored if greater than or equal to 0.0f;`
| `bool userDeclinedGPSSending = 10; /// if true, no GPS values will be sent from the vehicle` |  | `bool userDeclinedGPSSending = 10; /// if true, no GPS values will be sent from the vehicle`
| `}` |  | `}`
| `**/` |  | `**/`
| `` |  | ``
| `` |  | ``
| `/**` |  | `/**`
| `* This message is response to PCUpdateConfigRequest .` |  | `* This message is response to PCUpdateConfigRequest .`
| `* <div class=exmsg-main>` |  | `* <div class=exmsg-main>`
| `* <h4>PCUpdateConfigResponse Example Message:</h4>` |  | `* <h4>PCUpdateConfigResponse Example Message:</h4>`
| `* <div class=ex-msg>` |  | `* <div class=ex-msg>`
| `* <code>` |  | `* <code>`
| `* timestamp: 1490712208347` |  | `* timestamp: 1490712208347`
| `* messageId: 1` |  | `* messageId: 1`
| `* messages` |  | `* messages`
| `* {` |  | `* {`
| `* [com.fca.uconnect.global.pcUpdateConfigResponse]` |  | `* [com.fca.uconnect.global.pcUpdateConfigResponse]`
| `* {` |  | `* {`
| `* responseEnum: SUCCESS` |  | `* responseEnum: SUCCESS`
| `* }` |  | `* }`
| `* }` |  | `* }`
| `* </code>` |  | `* </code>`
| `* </div>` |  | `* </div>`
| `* </div>` |  | `* </div>`
| `*/` |  | `*/`
| `message PCUpdateConfigResponse {` |  | `message PCUpdateConfigResponse {`
| `enum ResponseEnum {` |  | `enum ResponseEnum {`
| `SUCCESS = 0;/// Config successful` |  | `SUCCESS = 0;/// Config successful`
| `FAILURE = 1;/// Config failed` |  | `FAILURE = 1;/// Config failed`
| `CONFIG_TYPE_NOT_ALLOWED = 3;/// Config type not supported in this region` |  | `CONFIG_TYPE_NOT_ALLOWED = 3;/// Config type not supported in this region`
| `FAILURE_PRIVACY_ON = 4; /// Privacy Mode On` |  | `FAILURE_PRIVACY_ON = 4; /// Privacy Mode On`
| `}` |  | `}`
| `ResponseEnum response = 1; /// Depricated` |  | `ResponseEnum response = 1; ///`
| `bool isTransient = 2; /// Depricated` |  | `bool isTransient = 2; ///`
| `int32 failureReasonCode = 3; /// Depricated.` |  | `int32 failureReasonCode = 3; ///`
| `` |  | ``
| `repeated ConfigResponseType configResponse = 4;` |  | `repeated ConfigResponseType configResponse = 4;`
| `` |  | ``
| `message ConfigResponseType {` |  | `message ConfigResponseType {`
| `ResponseEnum configurationResponse = 1;` |  | `ResponseEnum configurationResponse = 1;`
| `string name = 2;` |  | `string name = 2;`
| `string idenitfier = 3;` |  | `string idenitfier = 3;`
| `int32 failureReasonCode = 4;` |  | `int32 failureReasonCode = 4;`
| `bool isTransient = 5;` |  | `bool isTransient = 5;`
| `` |  | ``
| `}` |  | `}`
| `` |  | ``
| `` |  | ``
| `` |  | ``
| `}` |  | `}`
| `` |  | ``
| `/**` |  | `/**`
| `* This message is to notify SDP for Parental Controlconfigured Alert.` |  | `* This message is to notify SDP for Parental Controlconfigured Alert.`
| `* <div class=exmsg-main>` |  | `* <div class=exmsg-main>`
| `* </div>` |  | `* </div>`
| `*/` |  | `*/`
| `message PCConfiguredAlertPublish {` |  | `message PCConfiguredAlertPublish {`
| `oneof eventSource {` |  | `oneof eventSource {`
| `ConfigTypeVehicle.CurfewAlertConfig curfewAlertConfig = 1; /// the configuration that triggered this alert` |  | `ConfigTypeVehicle.CurfewAlertConfig curfewAlertConfig = 1; /// the configuration that triggered this alert`
| `ConfigTypeVehicle.SpeedAlertConfig speedAlertConfig = 2; /// the configuration that triggered this alert` |  | `ConfigTypeVehicle.SpeedAlertConfig speedAlertConfig = 2; /// the configuration that triggered this alert`
| `ConfigTypeVehicle.ValetAlertConfig valetAlertConfig = 3; /// the configuration that triggered this alert` |  | `ConfigTypeVehicle.ValetAlertConfig valetAlertConfig = 3; /// the configuration that triggered this alert`
| `ConfigTypeVehicle.GeoFenceAlertConfig geoFenceAlertConfig = 4; /// the configuration that triggered this alert` |  | `ConfigTypeVehicle.GeoFenceAlertConfig geoFenceAlertConfig = 4; /// the configuration that triggered this alert`
| `}` |  | `}`
| `Location eventLocation= 5; /// location of the vehicle when the event was triggered` |  | `Location eventLocation= 5; /// location of the vehicle when the event was triggered`
| `int64 eventTimestampUTC= 6; /// UTC time the event was triggered` |  | `int64 eventTimestampUTC= 6; /// UTC time the event was triggered`
| `int32 eventTimeUTCOffset= 7; /// offset in seconds of the vehicle time zone from UTC` |  | `int32 eventTimeUTCOffset= 7; /// offset in seconds of the vehicle time zone from UTC`
| `int32 vehicleSpeed= 8; /// speed in km/h when the event was triggered` |  | `int32 vehicleSpeed= 8; /// speed in km/h when the event was triggered`
| `int32 postedSpeed= 9; /// posted speed value from NAV system` |  | `int32 postedSpeed= 9; /// posted speed value from NAV system`
| `bool postedSpeedValid= 10; /// if false, postedSpeed was not available and/or did not participate in the trigger` |  | `bool postedSpeedValid= 10; /// if false, postedSpeed was not available and/or did not participate in the trigger`
| `}` |  | `}`
| `/**` |  | `/**`
| `* This message is to Notify SDP for Parental Control alert.` |  | `* This message is to Notify SDP for Parental Control alert.`
| `* <div class=exmsg-main>` |  | `* <div class=exmsg-main>`
| `* <h4>PCNotificationPublish Example Message:</h4>` |  | `* <h4>PCNotificationPublish Example Message:</h4>`
| `* <div class=ex-msg>` |  | `* <div class=ex-msg>`
| `* <code>` |  | `* <code>`
| `* timestamp: 1490713760069` |  | `* timestamp: 1490713760069`
| `* messageId: 2` |  | `* messageId: 2`
| `* messages` |  | `* messages`
| `* {` |  | `* {`
| `* [com.fca.uconnect.global.pcNotificationPublish]` |  | `* [com.fca.uconnect.global.pcNotificationPublish]`
| `* {` |  | `* {`
| `* notificatonType: PERIODIC_SEND` |  | `* notificatonType: PERIODIC_SEND`
| `* speed: 75` |  | `* speed: 75`
| `* speedSource: TBM_ACCELEROMETER` |  | `* speedSource: TBM_ACCELEROMETER`
| `* acceleration: 35.0` |  | `* acceleration: 35.0`
| `* accelerationSource: TBM_ACCELEROMETER` |  | `* accelerationSource: TBM_ACCELEROMETER`
| `* suddenCorneringRate: 15.5` |  | `* suddenCorneringRate: 15.5`
| `* vehiclePosition` |  | `* vehiclePosition`
| `* {` |  | `* {`
| `* vehiclePosition` |  | `* vehiclePosition`
| `* {` |  | `* {`
| `* positionLatitude: -84.54635620117188` |  | `* positionLatitude: -84.54635620117188`
| `* positionLongitude: 43.999900817871094` |  | `* positionLongitude: 43.999900817871094`
| `* }` |  | `* }`
| `* positionEncrypted: false` |  | `* positionEncrypted: false`
| `* gpsTimestamp: 360108355` |  | `* gpsTimestamp: 360108355`
| `* vehicleDirection: 32` |  | `* vehicleDirection: 32`
| `* }` |  | `* }`
| `* }` |  | `* }`
| `* }` |  | `* }`
| `* </code>` |  | `* </code>`
| `* </div>` |  | `* </div>`
| `* </div>` |  | `* </div>`
| `*/` |  | `*/`
| `` |  | ``
| `message PCLogUploads {` |  | `message PCLogUploads {`
| `TripLog tripLog = 1;` |  | `TripLog tripLog = 1;`
| `DrivingStyleLog driveStyleLog = 2;` |  | `DrivingStyleLog driveStyleLog = 2;`
| `SpeedAlertsLog speedAlertsLog = 3;` |  | `SpeedAlertsLog speedAlertsLog = 3;`
| `}` |  | `}`
| `` |  | ``
| `message TripLog {` |  | `message TripLog {`
| `string tripID = 5;` |  | `string tripID = 5;`
| `int64 IgnitionOnTimeStamp = 1; /// Time of IgnitionOn` |  | `int64 IgnitionOnTimeStamp = 1; /// Time of IgnitionOn`
| `Location startLocation = 2; /// Location at IgntionOn` |  | `Location startLocation = 2; /// Location at IgntionOn`
| `int64 IgnitionOffTimeStamp = 3; /// Time of Igntion Off` |  | `int64 IgnitionOffTimeStamp = 3; /// Time of Igntion Off`
| `int32 eventTimeUTCOffset= 7; /// offset in seconds of the vehicle time zone from UTC` |  | `int32 eventTimeUTCOffset= 7; /// offset in seconds of the vehicle time zone from UTC`
| `Location endLocation = 4; /// Location at Ignition Off` |  | `Location endLocation = 4; /// Location at Ignition Off`
| `}` |  | `}`
| `` |  | ``
| `message DrivingStyleLog {` |  | `message DrivingStyleLog {`
| `string tripID = 11;` |  | `string tripID = 11;`
| `repeated Acceleration harshAcceleration = 8;` |  | `repeated Acceleration harshAcceleration = 8;`
| `repeated Braking harshBraking = 9;` |  | `repeated Braking harshBraking = 9;`
| `repeated Cornering suddenCornering = 7;` |  | `repeated Cornering suddenCornering = 7;`
| `repeated SeatBelt seatBeltNotFastened = 10;` |  | `repeated SeatBelt seatBeltNotFastened = 10;`
| `}` |  | `}`
| `` |  | ``
| `` |  | ``
| `message SpeedAlertsLog {` |  | `message SpeedAlertsLog {`
| `string tripID = 5;` |  | `string tripID = 5;`
| `int32 ViolationTotals = 1; /// Total number of speed alert threshold violations this trip` |  | `int32 ViolationTotals = 1; /// Total number of speed alert threshold violations this trip`
| `int32 ThresholdAbovePostedSpeedTotal = 2; /// Total number of Speed above Posted Speed Threshold Violations` |  | `int32 ThresholdAbovePostedSpeedTotal = 2; /// Total number of Speed above Posted Speed Threshold Violations`
| `int32 thresholdPostedSpeedAbsent = 3; /// Total number of Speed above Posted Speed Absent Threshold Violations` |  | `int32 thresholdPostedSpeedAbsent = 3; /// Total number of Speed above Posted Speed Absent Threshold Violations`
| `int32 thresholdAbsolute = 4; // Total number of speed above Absolute Threshold violations` |  | `int32 thresholdAbsolute = 4; // Total number of speed above Absolute Threshold violations`
| `` |  | ``
| `}` |  | `}`
| `message Acceleration{` |  | `message Acceleration{`
| `int32 eventTimeUTCOffset = 3; /// offset in seconds of the vehicle time zone from UTC` |  | `int32 eventTimeUTCOffset = 3; /// offset in seconds of the vehicle time zone from UTC`
| `` |  | ``
| `int64 violationTimestamp = 2;` |  | `int64 violationTimestamp = 2;`
| `bool HARSH_ACCELERATION = 1; /// Harsh Acceleration threshold reached` |  | `bool HARSH_ACCELERATION = 1; /// Harsh Acceleration threshold reached`
| `}` |  | `}`
| `` |  | ``
| `message Braking {` |  | `message Braking {`
| `int32 eventTimeUTCOffset = 3; /// offset in seconds of the vehicle time zone from UTC` |  | `int32 eventTimeUTCOffset = 3; /// offset in seconds of the vehicle time zone from UTC`
| `int64 violationTimestamp = 1;` |  | `int64 violationTimestamp = 1;`
| `bool HARSH_BREAKING = 2; /// Harsh Breaking threshold reached` |  | `bool HARSH_BREAKING = 2; /// Harsh Breaking threshold reached`
| `}` |  | `}`
| `message Cornering {` |  | `message Cornering {`
| `int32 eventTimeUTCOffset = 3; /// offset in seconds of the vehicle time zone from UTC` |  | `int32 eventTimeUTCOffset = 3; /// offset in seconds of the vehicle time zone from UTC`
| `int64 violationTimestamp = 1;` |  | `int64 violationTimestamp = 1;`
| `bool SUDDEN_CORNERING = 2; /// Harsh Breaking threshold reached` |  | `bool SUDDEN_CORNERING = 2; /// Harsh Breaking threshold reached`
| `}` |  | `}`
| `` |  | ``
| `message SeatBelt {` |  | `message SeatBelt {`
| `int32 eventTimeUTCOffset = 3; ///` |  | `int32 eventTimeUTCOffset = 3; ///`
| `int64 violationTimestamp = 1;` |  | `int64 violationTimestamp = 1;`
| `bool SEATBELT_NOT_FASTENED = 2; /// Harsh Breaking threshold reached` |  | `bool SEATBELT_NOT_FASTENED = 2; /// Harsh Breaking threshold reached`
| `}` |  | `}`
| `` |  | ``
| `` |  | ``
| `` |  | ``
| `` |  | ``
| `` |  | ``
| `` |  | ``
| `// extend UconnectAny {` |  | `// extend UconnectAny {`
| `// PCUpdateConfigRequest pcUpdateConfigRequest = 1310;` |  | `// PCUpdateConfigRequest pcUpdateConfigRequest = 1310;`
| `// PCUpdateConfigResponse pcUpdateConfigResponse = 1311;` |  | `// PCUpdateConfigResponse pcUpdateConfigResponse = 1311;`
| `// PCConfiguredAlertPublish pcAlertPublish = 1312;` |  | `// PCConfiguredAlertPublish pcAlertPublish = 1312;`
| `// PCNotificationPublish pcNotificationPublish = 1313;` |  | `// PCNotificationPublish pcNotificationPublish = 1313;`
| `// AckMessage pcAckMessage=1314;` |  | `// AckMessage pcAckMessage=1314;`
| `` |  | ``
| `// }` |  | `// }`
| `` |  | ``
| `` |  | ``
| `` |  | ``