C2A_Core
di_aobc.c
[詳解]
1 #pragma section REPRO
8 #include "di_aobc.h"
9 #include "../../Drivers/Aocs/aobc.h"
10 #include "../../TlmCmd/user_packet_handler.h"
11 #include <src_core/Library/print.h>
13 #include "../../Settings/port_config.h"
14 #include "../../Settings/DriverSuper/driver_buffer_define.h"
15 
16 static void DI_AOBC_init_(void);
17 static void DI_AOBC_update_(void);
18 
19 static void DI_AOBC_cmd_dispatcher_init_(void);
20 static void DI_AOBC_cmd_dispatcher_(void);
21 
24 
27 
28 // バッファ
31 
32 
34 {
35  return AI_create_app_info("update_AOBC", DI_AOBC_init_, DI_AOBC_update_);
36 }
37 
38 
39 static void DI_AOBC_init_(void)
40 {
41  DS_ERR_CODE ret1;
42  DS_INIT_ERR_CODE ret2;
43 
47  if (ret1 != DS_ERR_CODE_OK)
48  {
49  Printf("AOBC buffer init Failed ! %d \n", ret1);
50  }
51 
53  if (ret2 != DS_INIT_OK)
54  {
55  Printf("AOBC init Failed ! %d \n", ret2);
56  }
57 }
58 
59 
60 static void DI_AOBC_update_(void)
61 {
62  int ret;
63  ret = AOBC_rec(&aobc_driver_);
64 
65  // [TODO]
66  // 必要があればここに処理を
67  (void)ret;
68 }
69 
70 
72 {
73  return AI_create_app_info("aobc_cdis",
76 }
77 
78 
80 {
82 }
83 
84 
85 static void DI_AOBC_cmd_dispatcher_(void)
86 {
88 }
89 
90 
92 {
93  DS_CMD_ERR_CODE ret;
94  CommonCmdPacket* pckt = (CommonCmdPacket*)packet; // const_cast
95  // ここで CCP_DEST_TYPE を宛先で受理できるように変更(なので const cast が発生している...)
96 
97  switch (CCP_get_dest_type(pckt))
98  {
99  case CCP_DEST_TYPE_TO_ME: // FALL THROUGH
100  case CCP_DEST_TYPE_TO_MOBC: // CCP_DEST_TYPE_TO_APID の追加に伴い deprecated
101  // MOBC のキューに溜まった後に実行されたもの
102  // 配送先 OBC では MOBC 側の TL などの影響は受けないはずなので RTC へ変換
104  break;
105  default:
106  // MOBC のキューに入らず直接転送
107  // そのままの EXEC_TYPE で転送.なにもしない
108  break;
109  }
110 
111  // 配送先 OBC が最終到達地なので
113 
114  ret = AOBC_send_cmd(&aobc_driver_, pckt);
115  // FIXME: ここも一旦握りつぶす(後で直す)
116  return DS_conv_cmd_err_to_ccp_cmd_ret(ret);
117 }
118 
119 
121 {
122  (void)packet;
123 
126 }
127 
128 
130 {
131  (void)packet;
132 
133  // 記録されたエラー情報を解除
136 }
137 
138 #pragma section
DS_CMD_ERR_CODE AOBC_send_cmd(AOBC_Driver *aobc_driver, const CommonCmdPacket *packet)
AOBC へのコマンド送信
Definition: aobc.c:128
DS_REC_ERR_CODE AOBC_rec(AOBC_Driver *aobc_driver)
AOBC のデータ(テレメ)受信
Definition: aobc.c:67
DS_INIT_ERR_CODE AOBC_init(AOBC_Driver *aobc_driver, uint8_t ch, DS_StreamRecBuffer *rx_buffer)
AOBC 初期化
Definition: aobc.c:26
AppInfo AI_create_app_info(const char *name, void(*initializer)(void), void(*entry_point)(void))
AppInfo を作る
Definition: app_info.c:9
void CDIS_clear_command_list(CommandDispatcher *cdis)
CDIS に登録されているコマンドキューからコマンドを削除
CommandDispatcher CDIS_init(PacketList *pl)
CDIS の初期化と取得
void CDIS_dispatch_command(CommandDispatcher *cdis)
CDIS に登録されているコマンドキューからコマンドを実行
void CDIS_clear_error_status(CommandDispatcher *cdis)
CDIS に登録されているコマンドキューのコマンド実行エラー情報を削除
CCP_DEST_TYPE CCP_get_dest_type(const CommonCmdPacket *packet)
DEST_TYPE を取得
@ CCP_EXEC_SUCCESS
void CCP_set_dest_type(CommonCmdPacket *packet, CCP_DEST_TYPE type)
DEST_TYPE を設定
void CCP_set_exec_type(CommonCmdPacket *packet, CCP_EXEC_TYPE type)
EXEC_TYPE を設定
@ CCP_EXEC_TYPE_RT
RT : Realtime Command
@ CCP_DEST_TYPE_TO_ME
@ CCP_DEST_TYPE_TO_MOBC
CCP_CmdRet CCP_make_cmd_ret_without_err_code(CCP_EXEC_STS exec_sts)
コマンド返り値である CCP_CmdRet を作成(エラーコード不使用版)
CCP の汎用 Utility
static void DI_AOBC_update_(void)
Definition: di_aobc.c:60
static DS_StreamRecBuffer DI_AOBC_rx_buffer_
Definition: di_aobc.c:29
AppInfo DI_AOBC_cmd_dispatcher(void)
AOBC cmd dispatcher アプリ生成関数
Definition: di_aobc.c:71
CCP_CmdRet Cmd_DI_AOBC_CDIS_CLEAR_ERR_LOG(const CommonCmdPacket *packet)
Definition: di_aobc.c:129
static CommandDispatcher DI_AOBC_cdis_
Definition: di_aobc.c:25
const CommandDispatcher *const DI_AOBC_cdis
AOBC cmd dispatcher
Definition: di_aobc.c:26
AppInfo DI_AOBC_update(void)
AOBC update アプリ生成関数
Definition: di_aobc.c:33
static AOBC_Driver aobc_driver_
Definition: di_aobc.c:22
CCP_CmdRet Cmd_DI_AOBC_CDIS_CLEAR_ALL_REALTIME(const CommonCmdPacket *packet)
Definition: di_aobc.c:120
static uint8_t DI_AOBC_rx_buffer_allocation_[DS_STREAM_REC_BUFFER_SIZE_DEFAULT]
Definition: di_aobc.c:30
static void DI_AOBC_cmd_dispatcher_init_(void)
Definition: di_aobc.c:79
const AOBC_Driver *const aobc_driver
AOBC driver
Definition: di_aobc.c:23
static void DI_AOBC_init_(void)
Definition: di_aobc.c:39
static void DI_AOBC_cmd_dispatcher_(void)
Definition: di_aobc.c:85
CCP_CmdRet DI_AOBC_dispatch_command(const CommonCmdPacket *packet)
CommonCmdPacket を AOBC に送信する
Definition: di_aobc.c:91
AOBC の DI と AOBC の cmd dispatcher
#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 に確保したメモリを与えて初期化する
CCP_CmdRet DS_conv_cmd_err_to_ccp_cmd_ret(DS_CMD_ERR_CODE code)
DS_CMD_ERR_CODE から CCP_CmdRet への変換関数
DS_INIT_ERR_CODE
Driver の初期化関数のエラーコード
Definition: driver_super.h:70
@ DS_INIT_OK
OK
Definition: driver_super.h:71
DS_CMD_ERR_CODE
各DIが Driver にコマンドを送るときに,統一的に使うコード
Definition: driver_super.h:100
DS_ERR_CODE
DriverSuper の汎用エラーコード
Definition: driver_super.h:116
@ DS_ERR_CODE_OK
返り値は継承先や IF 先で上書きされるため,OK は 0 であることが必須
Definition: driver_super.h:117
#define PORT_CH_RS422_AOBC
RS-422 UART ch2
Definition: port_config.h:8
HW 依存 Print, つまり ログ情報のフォーマット出力(デバッグ出力)
void Printf(const char *format,...)
Definition: print.c:9
コマンド返り値
Space Packet (コマンド用)
CommandDispatcher の Info 構造体
フレーム受信バッファ
Definition: driver_super.h:222
PacketList PH_aobc_cmd_list