103 uint16_t packet_size,
PL_ACK
PacketList 関連操作のエラーコード
@ PL_TLC_NOT_YET
まだ実行時刻ではない
@ PL_LIST_EMPTY
PacketList が空 (active 無し)
@ PL_BC_INACTIVE_BLOCK
無効な BC
@ PL_TLC_PAST_TIME
実行時間既に経過
@ PL_LIST_FULL
PacketList が満杯 (inactive 無し)
@ PL_BC_TIME_ADJUSTED
同時刻に Node があったため調整せれた
@ PL_PACKET_TYPE_ERR
PL_PACKET_TYPE 関連エラー
@ PL_BC_LIST_CLEARED
PL クリア (初期化, active 全削除) された
@ PL_NO_SUCH_NODE
そんな Node は無い
@ PL_TLC_ALREADY_EXISTS
同時刻に既に Node が存在
const PL_Node * PL_get_tail(const PacketList *pl)
PacketList の active な末端 Node を取得
void PL_clear_list(PacketList *pl)
PacketList をクリア
PL_ACK PL_check_tl_cmd(const PacketList *pl, cycle_t time)
PacketList の先頭と time を比較
PL_ACK PL_drop_node(PacketList *pl, PL_Node *prev, PL_Node *current)
指定された Node を落とす
PL_ACK PL_push_front(PacketList *pl, const void *packet)
PacketList の先頭に packet を挿入
uint16_t PL_get_total_node_num(const PacketList *pl)
PacketList の全 Node 数を返す
uint16_t PL_get_packet_size(const PacketList *pl)
PacketList で使用される packet の型サイズを返す
const PL_Node * PL_get_next(const PL_Node *node)
現 Node から次の Node を取得
PL_ACK PL_insert_after(PacketList *pl, PL_Node *pos, const void *packet)
ある Node の直後に packet を挿入
PL_PACKET_TYPE PL_get_packet_type(const PacketList *pl)
PacketList で使用される packet の型情報 PL_PACKET_TYPE を返す
const PL_Node * PL_get_head(const PacketList *pl)
PacketList の active な先頭 Node を取得
PL_ACK PL_deploy_block_cmd(PacketList *pl, const bct_id_t block, cycle_t start_at)
PacketList 上に BC を展開する
uint16_t PL_count_active_nodes(const PacketList *pl)
PacketList で有効な(実行待ち) Node 数を返す
PL_PACKET_TYPE
PacketList に格納される packet の型情報
@ PL_PACKET_TYPE_CCP
CommonCmdPacket
@ PL_PACKET_TYPE_CTCP
CommonTlmCmdPacket
@ PL_PACKET_TYPE_CTP
CommonTlmPacket
@ PL_PACKET_TYPE_OTHER
その他のパケット
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 を初期化
PL_ACK PL_insert_tl_cmd(PacketList *pl, const CommonCmdPacket *packet, cycle_t now)
CCP が時系列に並ぶように CCP を挿入する
uint32_t PL_count_executed_nodes(const PacketList *pl)
PacketList で実行された Node 数を返す
PL_ACK PL_drop_executed(PacketList *pl)
先頭 Node を落とす
uint16_t PL_count_inactive_nodes(const PacketList *pl)
PacketList で使用されていない Node 数を返す
int PL_is_full(const PacketList *pl)
PacketList が満杯かどうか
PL_ACK PL_push_back(PacketList *pl, const void *packet)
PacketList の末尾に packet を挿入
int PL_is_empty(const PacketList *pl)
PacketList が空かどうか
void * packet
片方向リストに格納される packet. どのような型でも良いように, void.(基本的には CTCP, CTP, CCP を想定)
struct PL_Node * next
次の Node (片方向リスト)
uint16_t packet_size_
PL_Node->packet の型サイズ
uint16_t total_nodes_
全ノード数 (static 確保)
PL_PACKET_TYPE packet_type_
保持する packet の型情報.PL_PACKET_TYPE を参照
PL_Node * inactive_list_head_
確保されている領域の内,使っていないものの先頭
PL_Node * active_list_tail_
確保されている領域の内,使っているものの末端
PL_Node * pl_node_stock_
確保されている PL_Node 領域(配列)全体の先頭
PL_Node * active_list_head_
確保されている領域の内,使っているものの先頭
void * packet_stock_
確保されている packet 領域(配列)全体の先頭
uint16_t active_nodes_
現在片方向リストに入っているノード数
uint32_t executed_nodes_
実行(コマンド) or 配送(テレメ)されたノード数 // FIXME: TODO: テレメのときもカウントアップしてるか確認