|
SmartSnippets DA1459x SDK
|
Go to the documentation of this file.
49 #define SVC_IEEE11073_SFLOAT_NAN (0x07FF)
50 #define SVC_IEEE11073_SFLOAT_NRES (0x0800)
51 #define SVC_IEEE11073_SFLOAT_PLUS_INFINITY (0x07FE)
52 #define SVC_IEEE11073_SFLOAT_MINUS_INFINITY (0x0802)
54 #define SVC_IEEE11073_FLOAT_NAN (0x007FFFFF)
55 #define SVC_IEEE11073_FLOAT_NRES (0x00800000)
56 #define SVC_IEEE11073_FLOAT_PLUS_INFINITY (0x007FFFFE)
57 #define SVC_IEEE11073_FLOAT_MINUS_INFINITY (0x00800002)
127 ieee_val->exp = -precision;
143 ieee_val->mantissa = (int32_t) val;
159 float_value = value->mantissa;
195 if (val->exp > 7 || val->exp < -8) {
196 return SVC_IEEE11073_SFLOAT_NRES;
202 if (val->mantissa > 2047 || val->mantissa < -2048) {
203 return SVC_IEEE11073_SFLOAT_NRES;
206 return ((val->exp & 0x0F) << 12) | (val->mantissa & 0x0FFF);
229 val->mantissa = ((int16_t) (sfloat_val << 4) >> 4);
230 val->exp = ((int16_t) sfloat_val >> 12);
253 if (val->exp > 127 || val->exp < -128) {
254 return SVC_IEEE11073_FLOAT_NRES;
260 if (val->mantissa > 8388607 || val->mantissa < -8388608) {
261 return SVC_IEEE11073_FLOAT_NRES;
264 return (val->exp << 24) | (val->mantissa & 0xFFFFFF);
287 val->mantissa = ((int32_t) (float_val << 8) >> 8);
288 val->exp = ((int32_t) float_val >> 24);
__STATIC_INLINE void unpack_ieee11703_float(uint32_t float_val, svc_ieee11073_float_t *val)
Unpack FLOAT-Type to IEEE 11073 value.
Definition: svc_types.h:274
__STATIC_INLINE uint8_t get_u8_inc(const uint8_t **buffer)
Get uint8 from buffer and increase pointer.
Definition: ble_bufops.h:92
uint8_t seconds
Definition: svc_types.h:68
__STATIC_INLINE void unpack_date_time(const uint8_t **ptr, svc_date_time_t *date_time)
Unpack date time.
Definition: svc_types.h:107
__STATIC_INLINE uint16_t get_u16_inc(const uint8_t **buffer)
Get uint16 from buffer and increase pointer.
Definition: ble_bufops.h:109
__STATIC_INLINE uint32_t pack_ieee11703_float(const svc_ieee11073_float_t *val)
Pack IEEE 11073 value to FLOAT-Type.
Definition: svc_types.h:241
uint8_t minutes
Definition: svc_types.h:67
__STATIC_INLINE void float_to_ieee11703(float val, int8_t precision, svc_ieee11073_float_t *ieee_val)
Convert float value to ISO/IEEE Std. 11073-20601™-2008 standard.
Definition: svc_types.h:125
__STATIC_INLINE void pack_date_time(const svc_date_time_t *date_time, uint8_t **ptr)
Pack date time.
Definition: svc_types.h:88
__STATIC_INLINE void put_u16_inc(uint8_t **buffer, uint16_t value)
Put uint16 to buffer and increase pointer.
Definition: ble_bufops.h:198
Definition: svc_types.h:62
uint8_t day
Definition: svc_types.h:65
Definition: svc_types.h:74
__STATIC_INLINE float ieee11703_to_float(const svc_ieee11073_float_t *value)
Convert ISO/IEEE Std. 11073-20601™-2008 standard to float value.
Definition: svc_types.h:154
uint8_t month
Definition: svc_types.h:64
uint16_t year
Definition: svc_types.h:63
uint8_t hours
Definition: svc_types.h:66
__STATIC_INLINE void unpack_ieee11703_sfloat(uint16_t sfloat_val, svc_ieee11073_float_t *val)
Unpack SFLOAT-Type to IEEE 11073 value.
Definition: svc_types.h:216
__STATIC_INLINE void put_u8_inc(uint8_t **buffer, uint8_t value)
Put uint8 to buffer and increase pointer.
Definition: ble_bufops.h:182
__STATIC_INLINE uint16_t pack_ieee11703_sfloat(const svc_ieee11073_float_t *val)
Pack IEEE 11073 value to SFLOAT-Type.
Definition: svc_types.h:183
Helpers to put and get data from BLE buffers.