C2A_Core
block_command_table.h ファイル

BCTの定義, BCT周りの関数 [詳解]

block_command_table.h の依存先関係図:
被依存関係図:

[ソースコード]

データ構造

struct  BCT_Pos
 BCT内での作業中の位置情報 [詳解]
 
struct  BCT_CmdData
 Cmd の保存場所 [詳解]
 
struct  BCT_Table
 BCT の本体. 実際に BC の cmd が確保されている [詳解]
 
struct  BCT_Func
 各setter, getter が入る [詳解]
 
struct  BlockCommandTable
 BCT 全体の構造体 [詳解]
 

マクロ定義

#define BCT_CMD_MAX_LENGTH   (64)
 
#define BCT_MAX_CMD_NUM   (32)
 1つのBCに最大何個のコマンドを挿入できるか [詳解]
 
#define BCT_MAX_BLOCKS   (383)
 BCのIDの最大数 [詳解]
 
#define SIZE_OF_BCT_ID_T   (2)
 bct_id_t の型サイズ.メモリインパクトがそれなりにあるので,可変に [詳解]
 

型定義

typedef uint16_t bct_id_t
 

列挙型

enum  BCT_ACK {
  BCT_SUCCESS , BCT_INVALID_BLOCK_NO , BCT_INVALID_CMD_NO , BCT_ISORATED_CMD ,
  BCT_DEFECTIVE_BLOCK , BCT_CMD_TOO_LONG , BCT_BC_FULL , BCT_ZERO_PERIOD ,
  BCT_UNKNOWN
}
 BCT 関係の関数のエラーステータス [詳解]
 

関数

void BCT_initialize (void)
 BCT の初期化関数 [詳解]
 
const BCT_CmdDataBCT_get_bc_cmd_data (const BCT_Pos *pos)
 BCT_CmdData の const pointer getter [詳解]
 
uint8_t BCT_get_bc_length (const bct_id_t block)
 BCT の length の getter [詳解]
 
BCT_ACK BCT_clear_block (const bct_id_t block)
 指定された block の BCT を初期化する [詳解]
 
void BCT_store_pos (void)
 pos を pos_stored に保存 [詳解]
 
void BCT_restore_pos (void)
 pos を pos_stored から復旧 [詳解]
 
BCT_ACK BCT_check_position (const BCT_Pos *pos)
 BCT_Pos* の validate [詳解]
 
BCT_ACK BCT_make_pos (BCT_Pos *pos, const bct_id_t block, const uint8_t cmd)
 BCT_Pos* を引数から作る [詳解]
 
BCT_ACK BCT_load_cmd (const BCT_Pos *pos, CommonCmdPacket *packet)
 保存データを CCP にコピーする. [詳解]
 
BCT_ACK BCT_register_cmd (const CommonCmdPacket *packet)
 Cmd を block_command_table->pos に登録する [詳解]
 
BCT_ACK BCT_overwrite_cmd (const BCT_Pos *pos, const CommonCmdPacket *packet)
 既に登録されている BC の Cmd の中身を外部から上書きする [詳解]
 
BCT_ACK BCT_copy_bct (const bct_id_t dst_block, const bct_id_t src_block)
 BCT の中身を 他の BCT に COPY する [詳解]
 
CMD_CODE BCT_get_id (const bct_id_t block, const uint8_t cmd)
 BCT 内の Cmd の CMD_CODE の getter [詳解]
 
cycle_t BCT_get_ti (const bct_id_t block, const uint8_t cmd)
 BCT 内の Cmd の TI の getter [詳解]
 
const uint8_t * BCT_get_param_head (const bct_id_t block, const uint8_t cmd)
 BCT 内の Cmd の param_head の getter [詳解]
 
BCT_ACK BCT_swap_address (const bct_id_t block_a, const bct_id_t block_b)
 BCT の block の指すポインタ & func を入れ替える [詳解]
 
BCT_ACK BCT_swap_contents (const bct_id_t block_a, const bct_id_t block_b)
 BCT の block の指す中身を入れ替える [詳解]
 
CCP_CmdRet BCT_convert_bct_ack_to_ccp_cmd_ret (BCT_ACK ack)
 返り値用 enum 変換用関数 [詳解]
 
CCP_CmdRet Cmd_BCT_CLEAR_BLOCK (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_BCT_SET_BLOCK_POSITION (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_BCT_COPY_BCT (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_BCT_OVERWRITE_CMD (const CommonCmdPacket *packet)
 
CCP_CmdRet Cmd_BCT_FILL_NOP (const CommonCmdPacket *packet)
 

変数

const BlockCommandTable *const block_command_table
 

詳解

BCTの定義, BCT周りの関数

block_command_table.h に定義があります。

マクロ定義詳解

◆ BCT_CMD_MAX_LENGTH

#define BCT_CMD_MAX_LENGTH   (64)

BCTに保存するパケットのパケットサイズの上限 TCPの最大長はかなり大きいので,ここではそれより小さくしてメモリを節約するのが通例 この値より大きなコマンドはBCTに保存できなくなることに注意すること

block_command_table.h12 行目に定義があります。

◆ BCT_MAX_BLOCKS

#define BCT_MAX_BLOCKS   (383)

BCのIDの最大数

block_command_table.h15 行目に定義があります。

◆ BCT_MAX_CMD_NUM

#define BCT_MAX_CMD_NUM   (32)

1つのBCに最大何個のコマンドを挿入できるか

block_command_table.h13 行目に定義があります。

◆ SIZE_OF_BCT_ID_T

#define SIZE_OF_BCT_ID_T   (2)

bct_id_t の型サイズ.メモリインパクトがそれなりにあるので,可変に

block_command_table.h24 行目に定義があります。

型定義詳解

◆ bct_id_t

typedef uint16_t bct_id_t

block_command_table.h31 行目に定義があります。

列挙型詳解

◆ BCT_ACK

enum BCT_ACK

BCT 関係の関数のエラーステータス

覚え書き
uint8_t を想定
列挙値
BCT_SUCCESS 
BCT_INVALID_BLOCK_NO 
BCT_INVALID_CMD_NO 
BCT_ISORATED_CMD 
BCT_DEFECTIVE_BLOCK 
BCT_CMD_TOO_LONG 
BCT_BC_FULL 
BCT_ZERO_PERIOD 
BCT_UNKNOWN 

block_command_table.h130 行目に定義があります。

関数詳解

◆ BCT_check_position()

BCT_ACK BCT_check_position ( const BCT_Pos pos)

BCT_Pos* の validate

引数
posBCTの位置
戻り値
BCT_ACK

block_command_table.c159 行目に定義があります。

被呼び出し関係図:

◆ BCT_clear_block()

BCT_ACK BCT_clear_block ( const bct_id_t  block)

指定された block の BCT を初期化する

引数
[in]blockBC の idx
戻り値
BCT_ACK

block_command_table.c438 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ BCT_convert_bct_ack_to_ccp_cmd_ret()

CCP_CmdRet BCT_convert_bct_ack_to_ccp_cmd_ret ( BCT_ACK  ack)

返り値用 enum 変換用関数

引数
ackBCT_ACK
戻り値
CCP_CmdRet

block_command_table.c386 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ BCT_copy_bct()

BCT_ACK BCT_copy_bct ( const bct_id_t  dst_block,
const bct_id_t  src_block 
)

BCT の中身を 他の BCT に COPY する

引数
[in]dst_blockコピー先の bct_id
[in]src_blockコピー元の bct_id
戻り値
BCT_ACK

block_command_table.c251 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ BCT_get_bc_cmd_data()

const BCT_CmdData* BCT_get_bc_cmd_data ( const BCT_Pos pos)

BCT_CmdData の const pointer getter

覚え書き
アサーションはされない
引数
[in]posconst BCT_Pos*
戻り値
const BCT_Pos*

block_command_table.c129 行目に定義があります。

被呼び出し関係図:

◆ BCT_get_bc_length()

uint8_t BCT_get_bc_length ( const bct_id_t  block)

BCT の length の getter

覚え書き
アサーションはされない.有効でない block の場合, 0 を返す
引数
[in]blockBC の idx
戻り値
length

block_command_table.c134 行目に定義があります。

被呼び出し関係図:

◆ BCT_get_id()

CMD_CODE BCT_get_id ( const bct_id_t  block,
const uint8_t  cmd 
)

BCT 内の Cmd の CMD_CODE の getter

引数
[in]blockBC の idx
[in]cmdCmds_data 内での idx
戻り値
CMD_CODE
覚え書き
(block, cmd) が異常値だった場合は Cmd_CODE_MAX を返す

block_command_table.c272 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ BCT_get_param_head()

const uint8_t* BCT_get_param_head ( const bct_id_t  block,
const uint8_t  cmd 
)

BCT 内の Cmd の param_head の getter

引数
[in]blockBC の idx
[in]cmdCmds_data 内での idx
戻り値
const uint8_t* ポインタ
覚え書き
(block, cmd) が異常値だった場合は (0, 0) のものを返す

block_command_table.c290 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ BCT_get_ti()

cycle_t BCT_get_ti ( const bct_id_t  block,
const uint8_t  cmd 
)

BCT 内の Cmd の TI の getter

引数
[in]blockBC の idx
[in]cmdCmds_data 内での idx
戻り値
TI
覚え書き
(block, cmd) が異常値だった場合は 0 を返す

block_command_table.c281 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ BCT_initialize()

void BCT_initialize ( void  )

BCT の初期化関数

覚え書き
BCT と書いているが内部では BCE_init も呼ばれるため BC が関係する有象無象が初期化される.

block_command_table.c58 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ BCT_load_cmd()

BCT_ACK BCT_load_cmd ( const BCT_Pos pos,
CommonCmdPacket packet 
)

保存データを CCP にコピーする.

引数
[in]posコピー元のpacketの位置
[out]packetコピーされる packet
戻り値
BCT_ACK
覚え書き
コマンド長は気にせず最大長を読み出すこととする. 実際の長さ情報はコピーされているヘッダに格納されている.

block_command_table.c239 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ BCT_make_pos()

BCT_ACK BCT_make_pos ( BCT_Pos pos,
const bct_id_t  block,
const uint8_t  cmd 
)

BCT_Pos* を引数から作る

引数
[out]posそこに作る pointer
[in]blockBC の idx
[in]cmdCmds_data 内での idx
戻り値
BCT_ACK

block_command_table.c321 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ BCT_overwrite_cmd()

BCT_ACK BCT_overwrite_cmd ( const BCT_Pos pos,
const CommonCmdPacket packet 
)

既に登録されている BC の Cmd の中身を外部から上書きする

引数
[in]pos上書きする位置
[in]packet上書きされる packet
戻り値
BCT_ACK

block_command_table.c210 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ BCT_register_cmd()

BCT_ACK BCT_register_cmd ( const CommonCmdPacket packet)

Cmd を block_command_table->pos に登録する

引数
[in]packet登録する Cmd の内容
戻り値
BCT_ACK

block_command_table.c173 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ BCT_restore_pos()

void BCT_restore_pos ( void  )

pos を pos_stored から復旧

引数
void
戻り値
void

block_command_table.c314 行目に定義があります。

被呼び出し関係図:

◆ BCT_store_pos()

void BCT_store_pos ( void  )

pos を pos_stored に保存

覚え書き
地上局とOBC内部のBCのポインタが混ざっておかしくならないようにするための改修. 詳細はC2Aドキュメント 「ブロックコマンド追加方法.md」
引数
void
戻り値
void

block_command_table.c307 行目に定義があります。

被呼び出し関係図:

◆ BCT_swap_address()

BCT_ACK BCT_swap_address ( const bct_id_t  block_a,
const bct_id_t  block_b 
)

BCT の block の指すポインタ & func を入れ替える

引数
[in]block_a入れ替える BC
[in]block_b入れ替える BC
戻り値
BCT_ACK 実行結果
覚え書き
ID1:HK:SRAM, ID2:EH:MRAM があった時に ID1:EH:MRAM, ID2:HK:SRAM が出来る BCT_swap_contents と組み合わせることで番号 - 中身はそのままで RAM だけを切り替えることが出来る 必ず BCE_swap_address と共に使用すること

block_command_table.c329 行目に定義があります。

呼び出し関係図:

◆ BCT_swap_contents()

BCT_ACK BCT_swap_contents ( const bct_id_t  block_a,
const bct_id_t  block_b 
)

BCT の block の指す中身を入れ替える

引数
[in]block_a入れ替える BC
[in]block_b入れ替える BC
戻り値
BCT_ACK 実行結果
覚え書き
ID1:EH:MRAM, ID2:HK:SRAM があった時に ID1:HK:MRAM, ID2:EH:SRAM が出来る BCT_swap_ram と組み合わせることで番号 - 中身はそのままで RAM だけを切り替えることが出来る 必ず BCE_swap_contents と共に使用すること

block_command_table.c348 行目に定義があります。

呼び出し関係図:

◆ Cmd_BCT_CLEAR_BLOCK()

CCP_CmdRet Cmd_BCT_CLEAR_BLOCK ( const CommonCmdPacket packet)

block_command_table.c418 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_BCT_COPY_BCT()

CCP_CmdRet Cmd_BCT_COPY_BCT ( const CommonCmdPacket packet)

block_command_table.c472 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_BCT_FILL_NOP()

CCP_CmdRet Cmd_BCT_FILL_NOP ( const CommonCmdPacket packet)

block_command_table.c518 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_BCT_OVERWRITE_CMD()

CCP_CmdRet Cmd_BCT_OVERWRITE_CMD ( const CommonCmdPacket packet)

block_command_table.c486 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ Cmd_BCT_SET_BLOCK_POSITION()

CCP_CmdRet Cmd_BCT_SET_BLOCK_POSITION ( const CommonCmdPacket packet)

block_command_table.c451 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

変数詳解

◆ block_command_table

const BlockCommandTable* const block_command_table
extern

block_command_table.c28 行目に定義があります。