C2A_Core
eb90_packet_for_driver_super.c
[詳解]
1 #pragma section REPRO
11 #include "../../Library/endian.h"
12 
13 // FIXME: DS_StreamConfig.data_link_layer_ をちゃんと見る!
14 
15 uint32_t EB90_PACKET_get_version_from_dssc(const DS_StreamConfig* p_stream_config)
16 {
17  // TODO: 現状は Version 番号が 8bit のもののみしか対応していない
18  return (uint32_t)(EB90_FRAME_get_packet_head_from_dssc(p_stream_config)[0]);
19 }
20 
21 
22 uint32_t EB90_PACKET_get_count_from_dssc(const DS_StreamConfig* p_stream_config)
23 {
24  const uint32_t version = EB90_PACKET_get_version_from_dssc(p_stream_config);
25 
26  if (version == 1)
27  {
28  return (uint32_t)(EB90_FRAME_get_packet_head_from_dssc(p_stream_config)[1]);
29  }
30  else
31  {
32  return 0;
33  }
34 }
35 
36 
37 uint32_t EB90_PACKET_get_id_from_dssc(const DS_StreamConfig* p_stream_config)
38 {
39  const uint32_t version = EB90_PACKET_get_version_from_dssc(p_stream_config);
40 
41  if (version == 1)
42  {
43  uint16_t id;
44  ENDIAN_memcpy(&id, &(EB90_FRAME_get_packet_head_from_dssc(p_stream_config)[2]), sizeof(uint16_t));
45  return (uint32_t)id;
46  }
47  else
48  {
49  return 0;
50  }
51 }
52 
53 
54 const uint8_t* EB90_PACKET_get_user_data_head_from_dssc(const DS_StreamConfig* p_stream_config)
55 {
56  const uint32_t version = EB90_PACKET_get_version_from_dssc(p_stream_config);
57 
58  if (version == 1)
59  {
60  return &(EB90_FRAME_get_packet_head_from_dssc(p_stream_config)[4]);
61  }
62  else
63  {
64  return NULL;
65  }
66 }
67 
68 #pragma section
const uint8_t * EB90_FRAME_get_packet_head_from_dssc(const DS_StreamConfig *p_stream_config)
受信フレームから Packet Field の先頭ポインタを取得する
コンポ間通信などで標準的に使う データリンク層 の EB90 Frame
uint32_t EB90_PACKET_get_version_from_dssc(const DS_StreamConfig *p_stream_config)
Version ID の取得
const uint8_t * EB90_PACKET_get_user_data_head_from_dssc(const DS_StreamConfig *p_stream_config)
受信フレームからPacket Field の先頭ポインタを取得する
uint32_t EB90_PACKET_get_count_from_dssc(const DS_StreamConfig *p_stream_config)
Tlm / Cmd Count の取得
uint32_t EB90_PACKET_get_id_from_dssc(const DS_StreamConfig *p_stream_config)
Tlm / Cmd ID の取得
コンポ間通信などで標準的に使う ネットワーク層 の EB90 Packet
void * ENDIAN_memcpy(void *dest, const void *src, size_t size)
エンディアンを考慮した memcpy
Definition: endian.c:11
DriverSuperStream の設定
Definition: driver_super.h:281