Changeset b074e80 in rtems


Ignore:
Timestamp:
May 5, 2009, 12:50:43 PM (10 years ago)
Author:
Thomas Doerfler <Thomas.Doerfler@…>
Branches:
4.10, 4.11, master
Children:
1b508981
Parents:
79d15192
Message:

Added functions to translate integers to/from byte streams.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/include/rtems/endian.h

    r79d15192 rb074e80  
    9090#endif
    9191
     92static inline uint16_t rtems_uint16_from_little_endian( const uint8_t *data)
     93{
     94  uint16_t value = 0;
     95  ssize_t i = 0;
     96
     97  for (i = 1; i >= 0; --i) {
     98    value = (uint16_t) ((value << 8) + data [i]);
     99  }
     100
     101  return value;
     102}
     103
     104static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
     105{
     106  uint32_t value = 0;
     107  ssize_t i = 0;
     108
     109  for (i = 3; i >= 0; --i) {
     110    value = (value << 8) + data [i];
     111  }
     112
     113  return value;
     114}
     115
     116static inline uint64_t rtems_uint64_from_little_endian( const uint8_t *data)
     117{
     118  uint64_t value = 0;
     119  ssize_t i = 0;
     120
     121  for (i = 7; i >= 0; --i) {
     122    value = (value << 8) + (uint64_t) data [i];
     123  }
     124
     125  return value;
     126}
     127
     128static inline uint16_t rtems_uint16_from_big_endian( const uint8_t *data)
     129{
     130  uint16_t value = 0;
     131  size_t i = 0;
     132
     133  for (i = 0; i < 2; ++i) {
     134    value = (uint16_t) ((value << 8) + data [i]);
     135  }
     136
     137  return value;
     138}
     139
     140static inline uint32_t rtems_uint32_from_big_endian( const uint8_t *data)
     141{
     142  uint32_t value = 0;
     143  size_t i = 0;
     144
     145  for (i = 0; i < 4; ++i) {
     146    value = (value << 8) + (uint32_t) data [i];
     147  }
     148
     149  return value;
     150}
     151
     152static inline uint64_t rtems_uint64_from_big_endian( const uint8_t *data)
     153{
     154  uint64_t value = 0;
     155  size_t i = 0;
     156
     157  for (i = 0; i < 8; ++i) {
     158    value = (value << 8) + (uint64_t) data [i];
     159  }
     160
     161  return value;
     162}
     163
     164static inline void rtems_uint16_to_little_endian( uint16_t value, uint8_t *data)
     165{
     166  size_t i = 0;
     167
     168  for (i = 0; i < 2; ++i) {
     169    data [i] = (uint8_t) value;
     170    value >>= 8;
     171  }
     172}
     173
     174static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
     175{
     176  size_t i = 0;
     177
     178  for (i = 0; i < 4; ++i) {
     179    data [i] = (uint8_t) value;
     180    value >>= 8;
     181  }
     182}
     183
     184static inline void rtems_uint64_to_little_endian( uint64_t value, uint8_t *data)
     185{
     186  size_t i = 0;
     187
     188  for (i = 0; i < 8; ++i) {
     189    data [i] = (uint8_t) value;
     190    value >>= 8;
     191  }
     192}
     193
     194static inline void rtems_uint16_to_big_endian( uint16_t value, uint8_t *data)
     195{
     196  ssize_t i = 0;
     197
     198  for (i = 1; i >= 0; --i) {
     199    data [i] = (uint8_t) value;
     200    value >>= 8;
     201  }
     202}
     203
     204static inline void rtems_uint32_to_big_endian( uint32_t value, uint8_t *data)
     205{
     206  ssize_t i = 0;
     207
     208  for (i = 3; i >= 0; --i) {
     209    data [i] = (uint8_t) value;
     210    value >>= 8;
     211  }
     212}
     213
     214static inline void rtems_uint64_to_big_endian( uint64_t value, uint8_t *data)
     215{
     216  ssize_t i = 0;
     217
     218  for (i = 7; i >= 0; --i) {
     219    data [i] = (uint8_t) value;
     220    value >>= 8;
     221  }
     222}
     223
    92224#endif /* _RTEMS_ENDIAN_H */
Note: See TracChangeset for help on using the changeset viewer.