|
C2A_Core
|
CTCP, CTP, CCP のリストとしてのデータ構造を定義. 片方向リストとして実装されている [詳解]
#include "packet_list.h"#include "../System/TimeManager/time_manager.h"#include "common_tlm_cmd_packet.h"#include "block_command_executor.h"#include "block_command_table.h"#include <stdint.h>#include <string.h>関数 | |
| static PL_Node * | PL_get_free_node_ (PacketList *pl) |
| 未使用 Node を新規に取得 [詳解] | |
| static PL_ACK | PL_drop_head_ (PacketList *pl) |
| 先頭 Node を落とす [詳解] | |
| 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.c に定義があります。
| 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 行目に定義があります。
|
static |
先頭 Node を落とす
| [in,out] | pl | PacketList |
| PL_SUCCESS | 成功 |
| PL_LIST_EMPTY | PacketList が空 |
packet_list.c の 426 行目に定義があります。
| 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 行目に定義があります。
|
static |
未使用 Node を新規に取得
| [in,out] | pl | PacketList |
| 未使用 | Node |
| NULL | (PacketListが満杯の時) |
packet_list.c の 414 行目に定義があります。
| 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 行目に定義があります。