5. 拡張機能
5.2. 拡張 API 向 ン ン
5.1.2.1. ID 割当関数 extension_assign_semaphore()
拡張 機能用 割 当 い ID 得 ID 本関数 呼 出
度 値
割当可能 ID い場合 返 値 通知 場合 ID格納 ン 内容 定
※ 本関数 開始関数 実行 前 実行
・ 関数 :
int extension_assign_semaphore( u8 *id );
・ 入力 :
前 方向 明
id OUT ID
・ 返 値:
値 明
SEMAPHORE_ERR_SUCCESS(0) 成
EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可
EXTENSION_ERR_ASSIGN(負数) 割当可能 ID あ
5.1.2.2. 拡張 得関数 extension_get_semaphore()
得 前 起動 IDLE 実行時 自動的 ン
得 行い
・ 関数 :
int extension_get_semaphore( u8 id );
・ 入力 :
前 方向 明
id IN ID
・ 返 値:
値 明
SEMAPHORE_ERR_SUCCESS(0) 成
SEMAPHORE_ERR_ILLEGAL_ID(負数) 指定 ID 在
SEMAPHORE_ERR_ILLEGAL_CONTEXT(負数) ン 外 実行 い
EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可
5.1.2.3. 拡張 返却関数 extension_put_semaphore()
返却前 起動 行い
・ 関数 :
int extension_put_semaphore( u8 id );
・ 入力 :
前 方向 明
id IN ID
・ 返 値:
値 明
SEMAPHORE_ERR_SUCCESS(0) 成
SEMAPHORE_ERR_ILLEGAL_ID(負数) 指定 ID 在
SEMAPHORE_ERR_OVERFLOW(負数) 返却 最大値 超過 い
EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可
5.1.3. 拡張 ン 機能
ン 機能 拡張 API 提供
5.1.3.1. ン ID 割当関数 extension_assign_event_flag()
拡張 ン 機能用 割 当 い ン ID 得 ン ID 本
関数 呼 出 度 値
割当可能 ID い場合 返 値 通知 場合 ン ID格納 ン 内容 定
※ 本関数 開始関数 実行 前 実行
・ 関数 :
int extension_assign_event_flag( u8 *id );
・ 入力 :
前 方向 明
id OUT ン ID
・ 返 値:
値 明
EVENTFLAG_ERR_SUCCESS(0) 成
EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可
EXTENSION_ERR_ALLOCATE(負数) 割当可能 ID あ
5.1.3.2. 拡張 ン 待 関数 extension_wait_event_flag()
ン 待 前 起動 行い IDLE 実行時 自動的
ン ン 待 行い
・ 関数 :
int extension_wait_event_flag( u8 id,
event_wait_mode_t wait_mode, u16 wait_flag_pattern, u16 *p_event_flag_pattern );
・ 入力 :
前 方向 明
id IN ン ID
wait_mode IN ン 待
wait_flag_pattern IN ン 待 ン
p_event_flag_pattern OUT 関数 復帰時 ン ン 格納 ン
必要 い場合 NULL 指定
・ 返 値:
値 明
EVENT_FLAG_ERR_SUCCESS(0) ン 待 完了
EVENT_FLAG_ERR_ILLEGAL_ID(負数) 指定 ID ン 在
EVENT_FLAG_ERR_ILLEGAL_WAIT_FLAG(負数) 指定 待 ン 異常
待 ン == 0x0000
EVENT_FLAG_ERR_ALREADY_WAIT_TASK(負数) 既 ン 待 い 在
EVENT_FLAG_ERR_ILLEGAL_CONTEXT(負数) ン 外 実行 い
EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い
EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可
5.1.3.3. 拡張 ン 設定関数 extension_set_event_flag ( )
ン 設定 前 起動 行い
・ 関数 :
int extension_set_event_flag( u8 id,
u16 set_bit_pattern );
・ 入力 :
前 方向 明
id IN ン ID
set_bit_pattern IN ン 設定 ン
・ 返 値:
値 明
EVENT_FLAG_ERR_SUCCESS(0) 成
EVENT_FLAG_ERR_ILLEGAL_ID(負数) 指定 ID ン 在
EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可
5.1.4. 拡張 機能
機能 拡張 API 提供
5.1.4.1. ID 割当関数 extension_assign_mail_box()
拡張 機能用 割 当 い ID 得 ID 本
関数 呼 出 度 値
割当可能 ID い場合 返 値 通知 場合 ID格納 ン
内容 定
※ 本関数 開始関数 実行 前 実行
・ 関数 :
int extension_assign_mail_box( u8 *id );
・ 入力 :
前 方向 明
id OUT ID
・ 返 値:
値 明
MAILBOX_ERR_SUCCESS(0) 成
EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可
EXTENSION_ERR_ALLOCATE(負数) 割当可能 ID あ
5.1.4.2. 拡張 信関数 extension_receive_mail_box ( )
信 前 起動 行い IDLE 実行時 自動的 ン
信 行い
・ 関数 :
int extension_receive_mail_box( u8 id,
void **pp_rcv_mail );
・ 入力 :
前 方向 明
id IN ID
pp_rcv_mail OUT 信 先頭 格納 ン
・ 返 値:
値 明
MAIL_BOX_ERR_SUCCESS(0) 信
MAIL_BOX_ERR_ILLEGAL_ID(負数) 指定 ID 在
MAIL_BOX_ERR_NULL(負数) 信 先頭 格納 ン NULL
MAIL_BOX_ERR_ALREADY_WAIT_TASK(負数) 既 待 い 在
MAIL_BOX_ERR_ILLEGAL_CONTEXT(負数) ン 外 実行 い
EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い
EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可
5.1.4.3. 拡張 信関数 extension_send_mail_box ( )
信 前 起動 行い
・ 関数 :
mail_box_errno_t send_mail_box( u8 id,
mail_type_t type, void *p_snd_mail );
・ 入力 :
前 方向 明
id IN ID
type IN 信
p_snd_mail IN 信 先頭
・ 返 値:
値 明
MAIL_BOX_ERR_SUCCESS(0) 信
MAIL_BOX_ERR_ILLEGAL_ID(負数) 指定 ID 在
MAIL_BOX_ERR_NULL(負数) 信 先頭 NULL
EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い
EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可
5.1.5. 再帰呼出 可能 機能
newlib標準C 等 使用 場合 得済 ソ 対 繰 返 ソ 得
行わ 可能性 あ newlib __env_lock __malloc_lock Scorpius
う 構成 対応 再帰呼 出 可能 得関数 返却関数 定
義 い
再帰呼出 可能 機能 関数 使用 場合 以 点 注意 必要 あ
得 ID 保 変数 連 得 実行 い 回数 保
変数 静的 領域 定義 い 変数 ID毎 初期値 -1 定
義 い
再帰呼出 可能 得関数 再帰呼出 可能 返却関数 対象 ID 記 定義 変数 引数 指定
記 定義 変数 い 初期化以外 更新 い い
ID 対 再帰呼出 可能 得関数 返却関数 ID
保 変数 連 呼 出 回数保 領域 使用 い 異 変数 使用
得 返却 行え 原因
再帰呼出 可能 得関数 得 資源 必 再帰呼出 可能 返却関数
返却 い
5.1.5.1. 再帰呼出 可能 得関数 recursive_get_semaphore()
一 ソ 得要求 対 複数回要求 最初 一回目 ソ
得
・ 関数 :
int recursive_get_semaphore( u8 id,
int *lock_task_id int *nest );
・ 入力 :
前 方向 明
id IN ID
lock_task_id IN/OUT 得 ID
nest IN/OUT 得回数
・ 返 値:
値 明
SEMAPHORE_ERR_SUCCESS(0) 成
SEMAPHORE_ERR_ILLEGAL_ID(負数) 指定 ID 在
SEMAPHORE_ERR_ILLEGAL_CONTEXT(負数) ン 外 実行 い
EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い
EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可
5.1.5.2. 再帰呼出可能 返却関数 recursive_put_semaphore()
再帰呼出可能 得関数 得 返却 際 使用
得回数 複数回あ 場合 実際 ソ 返却動作 行い 再帰呼出可能 得関数 呼 出 回数 返却回数 実行 ソ 返却 実行
得 ID 得回数 再帰呼出可能 得関数 使用 変数 指定
・ 関数 :
int recursive_put_semaphore( u8 id,
int *lock_task_id int *nest );
・ 入力 :
前 方向 明
id IN ID
lock_task_id IN/OUT 得 ID
nest IN/OUT 得回数
・ 返 値:
値 明
SEMAPHORE_ERR_SUCCESS(0) 成
SEMAPHORE_ERR_ILLEGAL_ID(負数) 指定 ID 在
SEMAPHORE_ERR_ILLEGAL_CONTEXT(負数) ン 外 実行 い
EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い
EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可
5.2. 拡張 API 向 ン ン
拡張API 使用 あ 拡張API用 ン ン 必要
拡張API ン ン 拡張API 使用 ID 個数 ID 開始 置 録
ン ン Scorpius\include\sco_extension.h DEFINE定義 修
・ 拡張 機能
EXTENSION_SEMID_START 拡張API 使用 ID 開始 置
EXTENSION_SEMID_NUM 拡張API 使用 数
・ 拡張 ン 機能
EXTENSION_FLAGID_START 拡張API 使用 ン ID 開始 置
EXTENSION_FLAGID_NUM 拡張API 使用 ン 数
・ 拡張 機能
EXTENSION_MAILBOXID_START 拡張API 使用 ID 開始 置
EXTENSION_MAILBOXID_NUM 拡張API 使用 数
ID 割 当 関 数 各 ID 開 始 置 EXTENSION_xxxxx_START 拡 張 API 使 用 数 EXTENSION
_xxxxx_NUM 範 割 当 行い xxxxx 毎 異
開始 置 静的 割 当 い ID 次 値 設定 い 数 動的 ID 割 当 必要 あ 数 設定 い
#define EXTENSION_SEMID_START 3
#define EXTENSION_SEMID_NUM 7
#define EXTENSION_FLAGID_START 3
#define EXTENSION_FLAGID_NUM 2
#define EXTENSION_MAILBOXID_START 0
#define EXTENSION_MAILBOXID_NUM 4
定義 場合 各 ID割当関数 呼 出 以 動作 行い
ID割当関数 3 ~ 9 ID 割 当
ン ID割当関数 3 ~ 4 ID 割 当
ID割当関数 0 ~ 3 ID 割 当
関 ID毎 初期値 sco_config.entry 定義 必要 あ ID割当
関数 呼 出 ID 返却 ID 得
拡張API 使用 資源 初期値 全 内容 必要 あ