11 #include "../../Drivers/Com/gs_validate.h"
12 #include "../../Settings/port_config.h"
13 #include "../../Settings/DriverSuper/driver_buffer_define.h"
65 Printf(
"GS buffer init Failed ! %d, %d \n", ret1, ret2);
76 Printf(
"!! GS Init Error %d !!\n", ret);
AppInfo AI_create_app_info(const char *name, void(*initializer)(void), void(*entry_point)(void))
AppInfo を作る
void CCSDS_set_rate(uint32_t ui_rate, CCSDS_Config *config)
CCSDS のレートを設定する API を呼び出す
uint8_t CCSDS_get_buffer_num(void)
CCSDS TX の残り buffer をカウントするAPI を呼びだす
@ CCP_EXEC_ILLEGAL_PARAMETER
コマンド実行時のパラメタエラー
@ CCP_EXEC_ILLEGAL_CONTEXT
コマンド実行時のその他のエラー
const uint8_t * CCP_get_param_head(const CommonCmdPacket *packet)
先頭のパラメタのポインタを取得
CCP_CmdRet CCP_make_cmd_ret_without_err_code(CCP_EXEC_STS exec_sts)
コマンド返り値である CCP_CmdRet を作成(エラーコード不使用版)
static RESULT DI_GS_init_(void)
static void DI_GS_rt_tlm_packet_handler_app_init_(void)
CCP_CmdRet Cmd_DI_GS_SET_RT_FLUSH_INTERVAL(const CommonCmdPacket *packet)
AppInfo DI_GS_rt_tlm_packet_handler_app(void)
const DI_GS_TlmPacketHandler *const DI_GS_rp_tlm_packet_handler
static void DI_GS_cmd_packet_handler_app_(void)
CCP_CmdRet Cmd_DI_GS_UART_TLM_ON(const CommonCmdPacket *packet)
AppInfo DI_GS_rp_tlm_packet_handler_app(void)
static void DI_GS_set_t2m_flush_interval_(cycle_t flush_interval, DI_GS_TlmPacketHandler *gs_tlm_packet_handler)
CCP_CmdRet Cmd_DI_GS_SET_FARM_PW(const CommonCmdPacket *packet)
CCP_CmdRet Cmd_DI_GS_SET_RP_FLUSH_INTERVAL(const CommonCmdPacket *packet)
const GS_Driver *const gs_driver
CCP_CmdRet Cmd_DI_GS_CCSDS_SET_RATE(const CommonCmdPacket *packet)
AppInfo DI_GS_cmd_packet_handler_app(void)
CCP_CmdRet Cmd_DI_GS_CCSDS_GET_BUFFER(const CommonCmdPacket *packet)
static uint8_t DI_GS_ccsds_rx_buffer_allocation_[GS_RX_HEADER_NUM][DS_STREAM_REC_BUFFER_SIZE_DEFAULT]
const DI_GS_TlmPacketHandler *const DI_GS_rt_tlm_packet_handler
CCP_CmdRet Cmd_DI_GS_SET_INFO(const CommonCmdPacket *packet)
static uint8_t DI_GS_uart_rx_buffer_allocation_[GS_RX_HEADER_NUM][DS_STREAM_REC_BUFFER_SIZE_DEFAULT]
static DS_StreamRecBuffer DI_GS_ccsds_rx_buffer_[GS_RX_HEADER_NUM]
static DI_GS_TlmPacketHandler DI_GS_rt_tlm_packet_handler_
static DI_GS_TlmPacketHandler DI_GS_rp_tlm_packet_handler_
static void DI_GS_rp_tlm_packet_handler_app_init_(void)
static void DI_GS_rp_tlm_packet_handler_app_(void)
static DS_StreamRecBuffer DI_GS_uart_rx_buffer_[GS_RX_HEADER_NUM]
static GS_Driver gs_driver_
CCP_CmdRet Cmd_DI_GS_DRIVER_RESET(const CommonCmdPacket *packet)
static void DI_GS_cmd_packet_handler_app_init_(void)
CCP_CmdRet Cmd_DI_GS_UART_TLM_OFF(const CommonCmdPacket *packet)
static void DI_GS_rt_tlm_packet_handler_app_(void)
#define DS_STREAM_REC_BUFFER_SIZE_DEFAULT
DS_ERR_CODE DS_init_stream_rec_buffer(DS_StreamRecBuffer *stream_rec_buffer, uint8_t *buffer, const uint16_t buffer_capacity)
DS_StreamRecBuffer に確保したメモリを与えて初期化する
void DS_nullify_stream_rec_buffers(DS_StreamRecBuffer *rx_buffers[DS_STREAM_MAX])
DS_StreamRecBuffer の要素数 DS_STREAM_MAX の配列を NULL で初期化する
DS_INIT_ERR_CODE
Driver の初期化関数のエラーコード
DS_ERR_CODE
DriverSuper の汎用エラーコード
@ DS_ERR_CODE_OK
返り値は継承先や IF 先で上書きされるため,OK は 0 であることが必須
void * ENDIAN_memcpy(void *dest, const void *src, size_t size)
エンディアンを考慮した memcpy
DS_CMD_ERR_CODE GS_send_vcdu(GS_Driver *gs_driver, const VCDU *vcdu)
地上に向けて TLM を送信. 形式は VCDU
DS_REC_ERR_CODE GS_rec_tctf(GS_Driver *gs_driver)
地上から CMD を受信する. 形式は TC Transer Frame
DS_INIT_ERR_CODE GS_init(GS_Driver *gs_driver, uint8_t uart_ch, DS_StreamRecBuffer *ccsds_rx_buffers[DS_STREAM_MAX], DS_StreamRecBuffer *uart_rx_buffers[DS_STREAM_MAX])
Driver の初期化
GS_PORT_TYPE
GS の通信ポートは CCSDS と UART の 2 つある
GS_VALIDATE_ERR GS_set_farm_pw(uint8_t positive_window_width)
Positive Window Width の設定
uint32_t GS_form_clcw(void)
テレメ用の CLCW の作成
PacketList PH_rt_tlm_list
C2A 全体を流れる Common Packet の配送を制御する
#define PORT_CH_RS422_MOBC_EXT
RS-422 UART ch1
HW 依存 Print, つまり ログ情報のフォーマット出力(デバッグ出力)
RESULT
Rust でいうところの Result<(), ()> のような,汎用的な成功したかどうかだけの返り値用 enum
@ RESULT_OK
OK (C2A では慣習的に OK 系列挙子は 0 を使うので,万が一他の enum に cast されても事故が起きにくいように)
void Printf(const char *format,...)
uint8_t buffer_num
送信バッファの残り数. 最大 CCSDS_FIFO_SIZE
uint32_t vcdu_counter
VCDU counter
TcpToMPdu tc_packet_to_m_pdu
PL から取り出した tc_packet を M_PDU に変換する
struct GS_Driver::@72 driver_ccsds
CCSDS_Config ccsds_config
const GS_Info * latest_info
GS_Info info[GS_PORT_TYPE_NUM]
CCSDS 用と UART 用 2 つ
uint8_t is_tlm_on
UART に TLM を流すかどうか, CCSDS では許容でも UART に TLM を送りすぎると詰まってしまうため
GS_PORT_TYPE tlm_tx_port_type
struct GS_Driver::@73 driver_uart
void T2M_initialize(TcpToMPdu *tcp_to_m_pdu)
T2M 構造体の初期化
T2M_ACK T2M_form_m_pdu(TcpToMPdu *tcp_to_m_pdu, PacketList *pl, M_PDU *m_pdu)
TCPacket を M_PDU に変換する
void VCDU_setup_realtime_vcdu_hdr(VCDU *vcdu, uint32_t counter)
void VCDU_set_clcw(VCDU *vcdu, uint32_t clcw)
void VCDU_setup_replay_vcdu_hdr(VCDU *vcdu, uint32_t counter)
uint32_t VCDU_calc_next_counter(uint32_t prev)