C2A_Core
|
CTCP, CTP, CCP のリストとしてのデータ構造を定義. 片方向リストとして実装されている [詳解]
データ構造 | |
struct | PL_Node |
片方向リストを構成する各 Node [詳解] | |
struct | PacketList |
パケットリスト本体 [詳解] | |
型定義 | |
typedef struct PL_Node | PL_Node |
列挙型 | |
enum | PL_PACKET_TYPE { PL_PACKET_TYPE_CTCP , PL_PACKET_TYPE_CTP , PL_PACKET_TYPE_CCP , PL_PACKET_TYPE_OTHER } |
PacketList に格納される packet の型情報 [詳解] | |
enum | PL_ACK { PL_SUCCESS , PL_LIST_FULL , PL_LIST_EMPTY , PL_PACKET_TYPE_ERR , PL_TLC_PAST_TIME , PL_TLC_ALREADY_EXISTS , PL_TLC_ON_TIME , PL_TLC_NOT_YET , PL_BC_INACTIVE_BLOCK , PL_BC_LIST_CLEARED , PL_BC_TIME_ADJUSTED , PL_NO_SUCH_NODE } |
PacketList 関連操作のエラーコード [詳解] | |
関数 | |
PL_ACK | PL_initialize (PL_Node *pl_node_stock, void *packet_stock, uint16_t node_num, PL_PACKET_TYPE packet_type, uint16_t packet_size, PacketList *pl) |
static に確保された PL_Node 配列と packet 配列を受け取りその領域を使用して PL を初期化 [詳解] | |
void | PL_clear_list (PacketList *pl) |
PacketList をクリア [詳解] | |
uint32_t | PL_count_executed_nodes (const PacketList *pl) |
PacketList で実行された Node 数を返す [詳解] | |
uint16_t | PL_count_active_nodes (const PacketList *pl) |
PacketList で有効な(実行待ち) Node 数を返す [詳解] | |
uint16_t | PL_count_inactive_nodes (const PacketList *pl) |
PacketList で使用されていない Node 数を返す [詳解] | |
uint16_t | PL_get_total_node_num (const PacketList *pl) |
PacketList の全 Node 数を返す [詳解] | |
uint16_t | PL_get_packet_size (const PacketList *pl) |
PacketList で使用される packet の型サイズを返す [詳解] | |
PL_PACKET_TYPE | PL_get_packet_type (const PacketList *pl) |
PacketList で使用される packet の型情報 PL_PACKET_TYPE を返す [詳解] | |
int | PL_is_empty (const PacketList *pl) |
PacketList が空かどうか [詳解] | |
int | PL_is_full (const PacketList *pl) |
PacketList が満杯かどうか [詳解] | |
const PL_Node * | PL_get_head (const PacketList *pl) |
PacketList の active な先頭 Node を取得 [詳解] | |
const PL_Node * | PL_get_tail (const PacketList *pl) |
PacketList の active な末端 Node を取得 [詳解] | |
const PL_Node * | PL_get_next (const PL_Node *node) |
現 Node から次の Node を取得 [詳解] | |
PL_ACK | PL_push_front (PacketList *pl, const void *packet) |
PacketList の先頭に packet を挿入 [詳解] | |
PL_ACK | PL_push_back (PacketList *pl, const void *packet) |
PacketList の末尾に packet を挿入 [詳解] | |
PL_ACK | PL_insert_after (PacketList *pl, PL_Node *pos, const void *packet) |
ある Node の直後に packet を挿入 [詳解] | |
PL_ACK | PL_drop_executed (PacketList *pl) |
先頭 Node を落とす [詳解] | |
PL_ACK | PL_drop_node (PacketList *pl, PL_Node *prev, PL_Node *current) |
指定された Node を落とす [詳解] | |
PL_ACK | PL_insert_tl_cmd (PacketList *pl, const CommonCmdPacket *packet, cycle_t now) |
CCP が時系列に並ぶように CCP を挿入する [詳解] | |
PL_ACK | PL_deploy_block_cmd (PacketList *pl, const bct_id_t block, cycle_t start_at) |
PacketList 上に BC を展開する [詳解] | |
PL_ACK | PL_check_tl_cmd (const PacketList *pl, cycle_t time) |
PacketList の先頭と time を比較 [詳解] | |
CTCP, CTP, CCP のリストとしてのデータ構造を定義. 片方向リストとして実装されている
packet_list.h に定義があります。
packet_list.h の 1 行目に定義があります。
enum PL_ACK |
PacketList 関連操作のエラーコード
列挙値 | |
---|---|
PL_SUCCESS | 成功 |
PL_LIST_FULL | PacketList が満杯 (inactive 無し) |
PL_LIST_EMPTY | PacketList が空 (active 無し) |
PL_PACKET_TYPE_ERR | PL_PACKET_TYPE 関連エラー |
PL_TLC_PAST_TIME | 実行時間既に経過 |
PL_TLC_ALREADY_EXISTS | 同時刻に既に Node が存在 |
PL_TLC_ON_TIME | 実行時刻丁度 |
PL_TLC_NOT_YET | まだ実行時刻ではない |
PL_BC_INACTIVE_BLOCK | 無効な BC |
PL_BC_LIST_CLEARED | PL クリア (初期化, active 全削除) された |
PL_BC_TIME_ADJUSTED | 同時刻に Node があったため調整せれた |
PL_NO_SUCH_NODE | そんな Node は無い |
packet_list.h の 38 行目に定義があります。
enum PL_PACKET_TYPE |
PacketList に格納される packet の型情報
列挙値 | |
---|---|
PL_PACKET_TYPE_CTCP | CommonTlmCmdPacket |
PL_PACKET_TYPE_CTP | CommonTlmPacket |
PL_PACKET_TYPE_CCP | CommonCmdPacket |
PL_PACKET_TYPE_OTHER | その他のパケット |
packet_list.h の 25 行目に定義があります。
PL_ACK PL_check_tl_cmd | ( | const PacketList * | pl, |
cycle_t | time | ||
) |
PacketList の先頭と time を比較
[in] | pl | PacketList |
[in] | time | 比較する時刻 |
PL_TLC_ON_TIME | ちょうど |
PL_TLC_PAST_TIME | 過去 |
PL_TLC_NOT_YET | まだ指定時刻になっていない or PacketList が空 |
PL_PACKET_TYPE_ERR | 指定した PacketList の packet が CCP ではない |
packet_list.c の 397 行目に定義があります。
void PL_clear_list | ( | PacketList * | pl | ) |
PacketList をクリア
[in,out] | pl | クリアする PacketList |
packet_list.c の 69 行目に定義があります。
uint16_t PL_count_active_nodes | ( | const PacketList * | pl | ) |
PacketList で有効な(実行待ち) Node 数を返す
[in] | pl | PacketList |
packet_list.c の 104 行目に定義があります。
uint32_t PL_count_executed_nodes | ( | const PacketList * | pl | ) |
PacketList で実行された Node 数を返す
[in] | pl | PacketList |
packet_list.c の 97 行目に定義があります。
uint16_t PL_count_inactive_nodes | ( | const PacketList * | pl | ) |
PacketList で使用されていない Node 数を返す
[in] | pl | PacketList |
packet_list.c の 111 行目に定義があります。
PL_ACK PL_deploy_block_cmd | ( | PacketList * | pl, |
const bct_id_t | block, | ||
cycle_t | start_at | ||
) |
PacketList 上に BC を展開する
[in,out] | pl | BC を展開する PacketList |
[in] | block | 展開する BC の ID |
[in] | start_at | 開始基準時刻 |
PL_SUCCESS | 成功 |
PL_BC_INACTIVE_BLOCK | block が不正 |
PL_BC_LIST_CLEARED | PacketList の空き容量が不足していたため,強制的に clear した場合 |
PL_BC_TIME_ADJUSTED | 時間調整が施された場合 |
PL_PACKET_TYPE_ERR | 指定した PacketList の packet が CCP ではない |
packet_list.c の 340 行目に定義があります。
PL_ACK PL_drop_executed | ( | PacketList * | pl | ) |
先頭 Node を落とす
[in] | pl | PacketList |
PL_SUCCESS | 成功 |
PL_LIST_EMPTY | PacketList が空 |
packet_list.c の 236 行目に定義があります。
PL_ACK PL_drop_node | ( | PacketList * | pl, |
PL_Node * | prev, | ||
PL_Node * | current | ||
) |
指定された Node を落とす
[in] | pl | PacketList |
[in] | prev | 落とす直前 Node. current が先頭の場合は NULL |
[in] | current | 落とす Node |
PL_SUCCESS | 成功 |
PL_LIST_EMPTY | PacketList が空 |
PL_NO_SUCH_NODE | 引数で指定したような Node は存在しない |
packet_list.c の 248 行目に定義があります。
const PL_Node* PL_get_head | ( | const PacketList * | pl | ) |
PacketList の active な先頭 Node を取得
[in] | pl | PacketList |
packet_list.c の 150 行目に定義があります。
現 Node から次の Node を取得
[in] | node | 現 Node |
次の | Node |
NULL | (現 Node が末尾の場合) |
packet_list.c の 162 行目に定義があります。
uint16_t PL_get_packet_size | ( | const PacketList * | pl | ) |
PacketList で使用される packet の型サイズを返す
[in] | pl | PacketList |
packet_list.c の 124 行目に定義があります。
PL_PACKET_TYPE PL_get_packet_type | ( | const PacketList * | pl | ) |
PacketList で使用される packet の型情報 PL_PACKET_TYPE を返す
[in] | pl | PacketList |
packet_list.c の 131 行目に定義があります。
const PL_Node* PL_get_tail | ( | const PacketList * | pl | ) |
PacketList の active な末端 Node を取得
[in] | pl | PacketList |
packet_list.c の 156 行目に定義があります。
uint16_t PL_get_total_node_num | ( | const PacketList * | pl | ) |
PL_ACK PL_initialize | ( | PL_Node * | pl_node_stock, |
void * | packet_stock, | ||
uint16_t | node_num, | ||
PL_PACKET_TYPE | packet_type, | ||
uint16_t | packet_size, | ||
PacketList * | pl | ||
) |
static に確保された PL_Node 配列と packet 配列を受け取りその領域を使用して PL を初期化
[in] | pl_node_stock | 使用する PL_Node 配列 |
[in] | packet_stock | PL_Node として使用する packet の配列(メモリ確保用) |
[in] | node_num | PL_Node の数 |
[in] | packet_type | 保持する packet の型情報.PL_PACKET_TYPE を参照 |
[in] | packet_size | 使用する packet の型サイズ |
[in,out] | pl | 初期化する PacketList |
PL_SUCCESS | 成功 |
PL_PACKET_TYPE_ERR | 型関連エラー |
packet_list.c の 34 行目に定義があります。
PL_ACK PL_insert_after | ( | PacketList * | pl, |
PL_Node * | pos, | ||
const void * | packet | ||
) |
ある Node の直後に packet を挿入
[in] | pl | PacketList |
[in] | pos | 直後に挿入される packet |
[in] | packet | 挿入する packet |
PL_SUCCESS | 成功 |
PL_LIST_FULL | PacketList が満杯 |
PL_NO_SUCH_NODE | pos で指定したような Node は存在しない |
packet_list.c の 214 行目に定義があります。
PL_ACK PL_insert_tl_cmd | ( | PacketList * | pl, |
const CommonCmdPacket * | packet, | ||
cycle_t | now | ||
) |
CCP が時系列に並ぶように CCP を挿入する
[in,out] | pl | CCP を挿入する PacketList |
[in] | packet | 挿入する CCP |
[in] | now | 基準時刻 (TimeLine なら現在時刻, TaskList なら現在 step) |
PL_SUCCESS | 成功 |
PL_LIST_FULL | PacketList が満杯 |
PL_TLC_PAST_TIME | 実行時間がすでに過ぎている |
PL_TLC_ALREADY_EXISTS | 指定した実行時間にはすでにコマンドが登録されている |
PL_NO_SUCH_NODE | 何かがおかしい |
PL_PACKET_TYPE_ERR | 指定した PacketList の packet が CCP ではない |
packet_list.c の 279 行目に定義があります。
int PL_is_empty | ( | const PacketList * | pl | ) |
int PL_is_full | ( | const PacketList * | pl | ) |
PL_ACK PL_push_back | ( | PacketList * | pl, |
const void * | packet | ||
) |
PacketList の末尾に packet を挿入
[in] | pl | PacketList |
[in] | packet | 挿入する packet |
PL_SUCCESS | 成功 |
PL_LIST_FULL | PacketList が満杯 |
packet_list.c の 189 行目に定義があります。
PL_ACK PL_push_front | ( | PacketList * | pl, |
const void * | packet | ||
) |
PacketList の先頭に packet を挿入
[in] | pl | PacketList |
[in] | packet | 挿入する packet |
PL_SUCCESS | 成功 |
PL_LIST_FULL | PacketList が満杯 |
packet_list.c の 168 行目に定義があります。