C2A_Core
ccsds_sils.cpp
[詳解]
1 #pragma section REPRO
14 #include "../ccsds_user.h"
15 
16 #ifdef USE_SCI_COM_WINGS
17 #include "ccsds_sils_sci_if.hpp"
18 #endif
19 
20 #define CCSDS_TX_VALID_SIZE (444)
21 
22 int CCSDS_init(void* my_ccsds_v)
23 {
24  // 初期化必要無し (初期化 API が無い)
25  CCSDS_Config* my_ccsds = (CCSDS_Config*)my_ccsds_v;
26  CCSDS_set_rate(0xAD, my_ccsds); // 初期値 230.4 [kbps]
27 
28 #ifdef USE_SCI_COM_WINGS
30 #endif
31  return CCSDS_ERR_OK;
32 }
33 
34 int CCSDS_rx(void* my_ccsds_v, void* data_v, int buffer_size)
35 {
36  unsigned char* data = (unsigned char*)data_v;
37  (CCSDS_Config*)my_ccsds_v;
38 
39 #ifdef USE_SCI_COM_WINGS
40  return SILS_SIC_IF_RX(data, buffer_size);
41 #endif
42 
43  return 0;
44 }
45 
46 int CCSDS_tx(void* my_ccsds_v, void* data_v, int data_size)
47 {
48  unsigned char* data = (unsigned char*)data_v;
49  int ret = 0;
50  (CCSDS_Config*)my_ccsds_v;
51 
52  if (data_size % CCSDS_TX_VALID_SIZE) return CCSDS_ERR_TX_SIZE_ERR;
54 
55 #ifdef USE_SCI_COM_WINGS
56  ret = SILS_SIC_IF_TX(data, data_size);
57 #endif
58  if (ret == 0) return CCSDS_ERR_TX_INVALID;
59 
60  return CCSDS_ERR_OK;
61 }
62 
63 int CCSDS_reopen(void* my_ccsds_v, int reason)
64 {
65  return 0;
66 }
67 
68 uint8_t CCSDS_get_buffer_num(void)
69 {
70  return 8;
71 }
72 
73 void CCSDS_set_rate(uint32_t ui_rate, CCSDS_Config* config)
74 {
75  if (ui_rate > 0xFF) ui_rate = 0xFF;
76 
77  config->bitrate = 40000000u / ui_rate; // [bps]
78 }
79 
80 
81 #pragma section
#define CCSDS_TX_VALID_SIZE
Definition: ccsds_sils.cpp:20
int CCSDS_init(void *my_ccsds_v)
CCSDS の init
Definition: ccsds_sils.cpp:22
void CCSDS_set_rate(uint32_t ui_rate, CCSDS_Config *config)
CCSDS のレートを設定する API を呼び出す
Definition: ccsds_sils.cpp:73
int CCSDS_rx(void *my_ccsds_v, void *data_v, int buffer_size)
CCSDS 受信. API を呼び出し, buffer に受信結果をコピーする
Definition: ccsds_sils.cpp:34
int CCSDS_tx(void *my_ccsds_v, void *data_v, int data_size)
CCSDS 送信. API を呼び出し, 送信を行う
Definition: ccsds_sils.cpp:46
uint8_t CCSDS_get_buffer_num(void)
CCSDS TX の残り buffer をカウントするAPI を呼びだす
Definition: ccsds_sils.cpp:68
int CCSDS_reopen(void *my_ccsds_v, int reason)
CCSDS reopen
Definition: ccsds_sils.cpp:63
int SILS_SIC_IF_RX(unsigned char *data_v, int count)
int SILS_SIC_IF_init(void)
int SILS_SIC_IF_TX(unsigned char *data_v, int count)
ccsds_sils_sci_if
@ CCSDS_ERR_TX_NO_BUFFER
Definition: ccsds_user.h:19
@ CCSDS_ERR_OK
OK は 0 を踏襲
Definition: ccsds_user.h:25
@ CCSDS_ERR_TX_SIZE_ERR
Definition: ccsds_user.h:21
@ CCSDS_ERR_TX_INVALID
Definition: ccsds_user.h:20
CCSDS ポートの初期化, データ送信, データ受信の際に必要となる設定情報を格納する構造体
Definition: ccsds.h:22
uint32_t bitrate
継承先の機器のビットレート値 (bps)
Definition: ccsds.h:24