-
Notifications
You must be signed in to change notification settings - Fork 97
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add profiling messages [AP-650] (#1401)
# Description @swift-nav/devinfra Add definitions and tests for 3 new messages - `MSG_PROFILING_RESOURCE_COUNTER` - `MSG_PROFILING_SYSTEM_INFO` - `MSG_PROFILING_THREAD_INFO` These messages are not intended for wide public use, the definitions and significance are defined elsewhere As always, only the changes under the `spec` directory are interesting, everything else is generated # API compatibility Does this change introduce a API compatibility risk? No ## API compatibility plan If the above is "Yes", please detail the compatibility (or migration) plan: N/A # JIRA Reference https://swift-nav.atlassian.net/browse/AP-650
- Loading branch information
Showing
66 changed files
with
12,104 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
207 changes: 207 additions & 0 deletions
207
c/include/libsbp/profiling/MSG_PROFILING_RESOURCE_COUNTER.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,207 @@ | ||
/* | ||
* Copyright (C) 2015-2021 Swift Navigation Inc. | ||
* Contact: https://support.swiftnav.com | ||
* | ||
* This source is subject to the license found in the file 'LICENSE' which must | ||
* be be distributed together with this source. All other rights reserved. | ||
* | ||
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, | ||
* EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED | ||
* WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. | ||
*/ | ||
|
||
/***************************************************************************** | ||
* Automatically generated from yaml/swiftnav/sbp/profiling.yaml | ||
* with generate.py. Please do not hand edit! | ||
*****************************************************************************/ | ||
|
||
#ifndef LIBSBP_PROFILING_MSG_PROFILING_RESOURCE_COUNTER_H | ||
#define LIBSBP_PROFILING_MSG_PROFILING_RESOURCE_COUNTER_H | ||
|
||
#include <math.h> | ||
#include <stdarg.h> | ||
#include <stdbool.h> | ||
#include <stddef.h> | ||
#include <stdint.h> | ||
#include <string.h> | ||
|
||
#include <libsbp/common.h> | ||
#include <libsbp/profiling/ResourceBucket.h> | ||
#include <libsbp/profiling_macros.h> | ||
#include <libsbp/string/sbp_string.h> | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/****************************************************************************** | ||
* | ||
* SBP_MSG_PROFILING_RESOURCE_COUNTER | ||
* | ||
*****************************************************************************/ | ||
/** Information about resource buckets | ||
* | ||
* Information about resource buckets. Refer to product documentation to | ||
* understand the meaning and values in this message. | ||
*/ | ||
typedef struct { | ||
/** | ||
* Message number in complete sequence | ||
*/ | ||
u8 seq_no; | ||
|
||
/** | ||
* Length of message sequence | ||
*/ | ||
u8 seq_len; | ||
|
||
/** | ||
* List of resource buckets | ||
*/ | ||
sbp_resource_bucket_t buckets[SBP_MSG_PROFILING_RESOURCE_COUNTER_BUCKETS_MAX]; | ||
/** | ||
* Number of elements in buckets | ||
* | ||
* When sending a message fill in this field with the number elements set in | ||
* buckets before calling an appropriate libsbp send function | ||
* | ||
* When receiving a message query this field for the number of elements in | ||
* buckets. The value of any elements beyond the index specified in this field | ||
* is undefined | ||
*/ | ||
u8 n_buckets; | ||
} sbp_msg_profiling_resource_counter_t; | ||
|
||
/** | ||
* Get encoded size of an instance of sbp_msg_profiling_resource_counter_t | ||
* | ||
* @param msg sbp_msg_profiling_resource_counter_t instance | ||
* @return Length of on-wire representation | ||
*/ | ||
static inline size_t sbp_msg_profiling_resource_counter_encoded_len( | ||
const sbp_msg_profiling_resource_counter_t *msg) { | ||
return SBP_MSG_PROFILING_RESOURCE_COUNTER_ENCODED_OVERHEAD + | ||
(msg->n_buckets * SBP_RESOURCE_BUCKET_ENCODED_LEN); | ||
} | ||
|
||
/** | ||
* Encode an instance of sbp_msg_profiling_resource_counter_t to wire | ||
* representation | ||
* | ||
* This function encodes the given instance in to the user provided buffer. The | ||
* buffer provided to this function must be large enough to store the encoded | ||
* message otherwise it will return SBP_ENCODE_ERROR without writing anything to | ||
* the buffer. | ||
* | ||
* Specify the length of the destination buffer in the \p len parameter. If | ||
* non-null the number of bytes written to the buffer will be returned in \p | ||
* n_written. | ||
* | ||
* @param buf Destination buffer | ||
* @param len Length of \p buf | ||
* @param n_written If not null, on success will be set to the number of bytes | ||
* written to \p buf | ||
* @param msg Instance of sbp_msg_profiling_resource_counter_t to encode | ||
* @return SBP_OK on success, or other libsbp error code | ||
*/ | ||
SBP_EXPORT s8 sbp_msg_profiling_resource_counter_encode( | ||
uint8_t *buf, uint8_t len, uint8_t *n_written, | ||
const sbp_msg_profiling_resource_counter_t *msg); | ||
|
||
/** | ||
* Decode an instance of sbp_msg_profiling_resource_counter_t from wire | ||
* representation | ||
* | ||
* This function decodes the wire representation of a | ||
* sbp_msg_profiling_resource_counter_t message to the given instance. The | ||
* caller must specify the length of the buffer in the \p len parameter. If | ||
* non-null the number of bytes read from the buffer will be returned in \p | ||
* n_read. | ||
* | ||
* @param buf Wire representation of the sbp_msg_profiling_resource_counter_t | ||
* instance | ||
* @param len Length of \p buf | ||
* @param n_read If not null, on success will be set to the number of bytes read | ||
* from \p buf | ||
* @param msg Destination | ||
* @return SBP_OK on success, or other libsbp error code | ||
*/ | ||
SBP_EXPORT s8 sbp_msg_profiling_resource_counter_decode( | ||
const uint8_t *buf, uint8_t len, uint8_t *n_read, | ||
sbp_msg_profiling_resource_counter_t *msg); | ||
/** | ||
* Send an instance of sbp_msg_profiling_resource_counter_t with the given write | ||
* function | ||
* | ||
* An equivalent of #sbp_message_send which operates specifically on | ||
* sbp_msg_profiling_resource_counter_t | ||
* | ||
* The given message will be encoded to wire representation and passed in to the | ||
* given write function callback. The write callback will be called several | ||
* times for each invocation of this function. | ||
* | ||
* @param s SBP state | ||
* @param sender_id SBP sender id | ||
* @param msg Message to send | ||
* @param write Write function | ||
* @return SBP_OK on success, or other libsbp error code | ||
*/ | ||
SBP_EXPORT s8 sbp_msg_profiling_resource_counter_send( | ||
sbp_state_t *s, u16 sender_id, | ||
const sbp_msg_profiling_resource_counter_t *msg, sbp_write_fn_t write); | ||
|
||
/** | ||
* Compare two instances of sbp_msg_profiling_resource_counter_t | ||
* | ||
* The two instances will be compared and a value returned consistent with the | ||
* return codes of comparison functions from the C standard library | ||
* | ||
* 0 will be returned if \p a and \p b are considered equal | ||
* A value less than 0 will be returned if \p a is considered to be less than \p | ||
* b A value greater than 0 will be returned if \p b is considered to be greater | ||
* than \p b | ||
* | ||
* @param a sbp_msg_profiling_resource_counter_t instance | ||
* @param b sbp_msg_profiling_resource_counter_t instance | ||
* @return 0, <0, >0 | ||
*/ | ||
SBP_EXPORT int sbp_msg_profiling_resource_counter_cmp( | ||
const sbp_msg_profiling_resource_counter_t *a, | ||
const sbp_msg_profiling_resource_counter_t *b); | ||
|
||
#ifdef __cplusplus | ||
} | ||
|
||
static inline bool operator==(const sbp_msg_profiling_resource_counter_t &lhs, | ||
const sbp_msg_profiling_resource_counter_t &rhs) { | ||
return sbp_msg_profiling_resource_counter_cmp(&lhs, &rhs) == 0; | ||
} | ||
|
||
static inline bool operator!=(const sbp_msg_profiling_resource_counter_t &lhs, | ||
const sbp_msg_profiling_resource_counter_t &rhs) { | ||
return sbp_msg_profiling_resource_counter_cmp(&lhs, &rhs) != 0; | ||
} | ||
|
||
static inline bool operator<(const sbp_msg_profiling_resource_counter_t &lhs, | ||
const sbp_msg_profiling_resource_counter_t &rhs) { | ||
return sbp_msg_profiling_resource_counter_cmp(&lhs, &rhs) < 0; | ||
} | ||
|
||
static inline bool operator<=(const sbp_msg_profiling_resource_counter_t &lhs, | ||
const sbp_msg_profiling_resource_counter_t &rhs) { | ||
return sbp_msg_profiling_resource_counter_cmp(&lhs, &rhs) <= 0; | ||
} | ||
|
||
static inline bool operator>(const sbp_msg_profiling_resource_counter_t &lhs, | ||
const sbp_msg_profiling_resource_counter_t &rhs) { | ||
return sbp_msg_profiling_resource_counter_cmp(&lhs, &rhs) > 0; | ||
} | ||
|
||
static inline bool operator>=(const sbp_msg_profiling_resource_counter_t &lhs, | ||
const sbp_msg_profiling_resource_counter_t &rhs) { | ||
return sbp_msg_profiling_resource_counter_cmp(&lhs, &rhs) >= 0; | ||
} | ||
|
||
#endif // ifdef __cplusplus | ||
|
||
#endif /* LIBSBP_PROFILING_MSG_PROFILING_RESOURCE_COUNTER_H */ |
Oops, something went wrong.