Amazon FreeRTOS のAPI一覧


Amazon FreeRTOS V1.0.0 の各APIについて一言で説明してみました。

# FreeRTOS kernel

## タスクとスケジューラ

| API | Comment |
|:--|:--|
| portSWITCH_TO_USER_MODE()  | Supervisor モードから User モードへ切り替える  |
| vTaskAllocateMPURegions() | タスクにMemory Protection Unit (MPU) regionsを割り当てる |
| xTaskAbortDelay() | タスクを Blocked state に遷移させる |
| xTaskCallApplicationTaskHook()  | タスクにtaskhookを関連付ける。  |
| xTaskCheckForTimeOut()  | タスクにタイムアウトを設定、expireしたら Blocked state に遷移させる  |
| xTaskCreate()  | タスクを生成する  |
| xTaskCreateStatic()  | 静的なメモリを使ってタスクを生成する |
| xTaskCreateRestricted()  | Memory Protection Unit (MPU) restricted task　を生成する  |
| vTaskDelay()  | タスクを指定tickだけ Blocked statee に入れる  |
| vTaskDelayUntil()  |  タスクをある絶対時刻まで  Blocked statee に入れる |
| vTaskDelete()  |  タスクを削除する |
| taskDISABLE_INTERRUPTS()  | 割り込むを無効にする  |
| taskENABLE_INTERRUPTS()  | 割り込みを有効にする  |
| taskENTER_CRITICAL()  | クリティカルセクションに入る  |
| taskENTER_CRITICAL_FROM_ISR()  | クリティカルセクションに入る  |
| taskEXIT_CRITICAL()  | クリティカルセクションから出る  |
| taskEXIT_CRITICAL_FROM_ISR()  | クリティカルセクションから出る  |
| xTaskGetApplicationTaskTag()  | タスクのタグを取得する  |
| xTaskGetCurrentTaskHandle()  | Running Stateにいるタスクのハンドルを取得する  |
| xTaskGetIdleTaskHandle()  |  Idle Stateにいるタスクのハンドルを取得する  |
| xTaskGetHandle()  | 名前を指定して るタスクのハンドルを取得する  |
| uxTaskGetNumberOfTasks()  | タスク数を取得する  |
| vTaskGetRunTimeStats()  | タスクの統計情報を取得する　（タスク名、ＣＰＵ時間、CPU時間の割合） |
| xTaskGetSchedulerState()  | スケジューラの状態を取得する （開始していない、実行中、サスペンド中） |
| uxTaskGetStackHighWaterMark()  | タスクの残りスタック量を取得する  |
| eTaskGetState()  | タスクの enumerated type な状態を取得する  |
| uxTaskGetSystemState()  | 複数タスクの詳細な状態を取得する。  |
| vTaskGetTaskInfo()  | ある一つのタスクの詳細な状態を取得する。  |
| pvTaskGetThreadLocalStoragePointer()  | タスクの Thread local storage のポインタを取得する  |
| pcTaskGetName()  | タスクの名前を取得する  |
| xTaskGetTickCount()  | タスクが消費したtickcountを取得する  |
| xTaskGetTickCountFromISR()  | タスクが消費したtickcountを取得する  |
| vTaskList()  | タスクの状態を読みやすい形式で表示する  |
| xTaskNotify()  | タスクにNotify (32bitの値)を送る  |
| xTaskNotifyAndQuery()  | タスクにNotify (32bitの値)を送る 以前の値を使う  |
| xTaskNotifyAndQueryFromISR()  | タスクにNotify (32bitの値)を送る 以前の値を使う  |
| xTaskNotifyFromISR()  | タスクにNotify (32bitの値)を送る  |
| xTaskNotifyGive()  | タスクにNotifyを送る 値はインクリメントする |
| vTaskNotifyGiveFromISR()  | タスクにNotifyを送る 値はインクリメントする  |
| xTaskNotifyStateClear()  | タスクのpending notificationをクリアする。 notification valueはクリアしない  |
| ulTaskNotifyTake()  | タスクにNotifyを送る 値はデクリメントする  |
| xTaskNotifyWait()  | タスクに指定tickcout後にNotifyを送る  |
| uxTaskPriorityGet()  | タスクのプライオリティを取得する  |
| vTaskPrioritySet()  | タスクのプライオリティを設定する  |
| vTaskResume()  | タスクの状態をSuspendからReadyに復帰する  |
| xTaskResumeAll()  | すべてのSuspendのタスクを Activeに復帰する  |
| xTaskResumeFromISR()  | タスクの状態をSuspendからReadyに復帰する  |
| vTaskSetApplicationTaskTag()  | タスクにタグを割り当てる  |
| vTaskSetThreadLocalStoragePointer()  | タスクの Thread local storage のポインタを設定する  |
| vTaskSetTimeOutState()  | タイムアウトの構造体を設定する |
| vTaskStartScheduler()  | スケジューラを開始する  |
| vTaskStepTick()  | tiklessの場合にtickを進ませる。  |
| vTaskSuspend()  | タスクをsuspendする  |
| vTaskSuspendAll()  | すべてのタスクをsuspendする  |
| taskYIELD()  | タスクのコンテキストスイッチを強制する  |

## キュー

| API | Comment |
|:--|:--|
| vQueueAddToRegistry()  | キューに読みやすい名前を割り当てる  |
| xQueueAddToSet()  | キューセットにキューまたはセマフォを追加する  |
| xQueueCreate()  | キューを生成する  |
| xQueueCreateSet()  | キューセットを生成する  |
| xQueueCreateStatic()  | 静的なメモリを使ってキューを生成する   |
| vQueueDelete()  | キューを削除する  |
| pcQueueGetName()  | キューの名前を取得する  |
| xQueueIsQueueEmptyFromISR()  | キューが空かどうか確認する  |
| xQueueIsQueueFullFromISR()  | キューが満杯かどうか確認する  |
| uxQueueMessagesWaiting()  | キューが保持しているアイテム数を取得する  |
| uxQueueMessagesWaitingFromISR()  | キューが保持しているアイテム数を取得する  |
| xQueueOverwrite()  | キューが満杯でも、値を詰め込み上書きする。  |
| xQueueOverwriteFromISR()  | キューが満杯でも、アイテムを詰め込み上書きする  |
| xQueuePeek()  | キューからアイテムを取り出す、取り出したアイテムはキューにそのまま残す  |
| xQueuePeekFromISR()  | キューからアイテムを取り出す、取り出したアイテムはキューにそのまま残す  |
| xQueueReceive()  | キューからアイテムを取り出す、取り出したアイテムはキューから削除する  |
| xQueueReceiveFromISR()  | キューからアイテムを取り出す、取り出したアイテムはキューから削除する   |
| xQueueRemoveFromSet()  | キューセットからキューまたはセマフォを削除する  |
| xQueueReset()  | キューを空の状態にリセットする  |
| xQueueSelectFromSet()  | キューセットから利用可能なキューまたはセマフォをselectする  |
| xQueueSelectFromSetFromISR()  | キューセットから利用可能なキューまたはセマフォをselectする  |
| xQueueSend()  | キューの最後にアイテムを追加する。  |
| xQueueSendToFront()  | キューの先頭にアイテムを追加する。  |
| xQueueSendToBack()  | キューの最後にアイテムを追加する。  |
| xQueueSendFromISR()  | キューの最後にアイテムを追加する。  |
| xQueueSendToFrontFromISR()  | キューの先頭にアイテムを追加する。  |
| xQueueSendToBackFromISR()  | キューの最後にアイテムを追加する。  |
| uxQueueSpacesAvailable()  | キューの空きサイズを取得する  |


## セマフォ

| API | Comment |
|:--|:--|
| vSemaphoreCreateBinary()  | バイナリセマフォを生成する [非推奨] |
| xSemaphoreCreateBinary()  | バイナリセマフォを生成する  |
| xSemaphoreCreateBinaryStatic()  | 静的なメモリを使ってバイナリセマフォを生成する  |
| xSemaphoreCreateCounting()  | カウンティングセマフォを生成する  |
| xSemaphoreCreateCountingStatic()  | 静的なメモリを使ってカウンティングセマフォを生成する  |
| xSemaphoreCreateMutex()  | ミューテックスを生成する  |
| xSemaphoreCreateMutexStatic()  | 静的なメモリを使ってミューテックスを生成する  |
| xSemaphoreCreateRecursiveMutex()  | 再帰ミューテックスを生成する  |
| xSemaphoreCreateRecursiveMutexStatic()  | 静的なメモリを使って再帰ミューテックスを生成する   |
| vSemaphoreDelete()  | セマフォ、ミューテックスを削除する  |
| uxSemaphoreGetCount()  | セマフォのカウント値を取得する  |
| xSemaphoreGetMutexHolder()  | ミューテックスを保持するタスクのハンドルを取得する  |
| xSemaphoreGetMutexHolderFromISR()  | ミューテックスを保持するタスクのハンドルを取得する  |
| xSemaphoreGive()  | セマフォを解放する  |
| xSemaphoreGiveFromISR()  | セマフォを解放する  |
| xSemaphoreGiveRecursive()  |  再帰ミューテックスを解放する  |
| xSemaphoreTake()  | セマフォを獲得する  |
| xSemaphoreTakeFromISR()  | セマフォを獲得する  |
| xSemaphoreTakeRecursive()  | ミューテックスを獲得する  |

## ソフトウェアタイマ

| API | Comment |
|:--|:--|
| xTimerChangePeriod()  | タイマの周期を設定する  |
| xTimerChangePeriodFromISR()  | タイマの周期を設定する  |
| xTimerCreate()  | タイマを生成する  |
| xTimerCreateStatic()  | 静的なメモリを使ってタイマを生成する  |
| xTimerDelete()  | タイマを削除する  |
| xTimerGetExpiryTime()  | タイマがexpireする時刻　を取得する  |
| pcTimerGetName()  | タイマの名前を取得する  |
| xTimerGetPeriod()  | タイマの周期を取得する  |
| xTimerGetTimerDaemonTaskHandle()  |タイマデーモンタスクのハンドルを取得する   |
| pvTimerGetTimerID()  | タイマのIDを取得する  |
| xTimerIsTimerActive()  | タイマを有効にする  |
| xTimerPendFunctionCall()  | タイマのファンクションコールを設定  |
| xTimerPendFunctionCallFromISR()  | タイマのファンクションコールを設定  |
| xTimerReset()  |  タイマをリスタートする |
| xTimerResetFromISR()  | タイマをリスタートする  |
| vTimerSetTimerID()  |  タイマのIDを設定する 複数のタイマで同じコールバック関数を呼ぶ場合に使う |
| xTimerStart()  | タイマをスタートする  |
| xTimerStartFromISR()  | タイマをスタートする  |
| xTimerStop()  | タイマをストップする  |
| xTimerStopFromISR()  | タイマをストップする  |


## event group

| API | Comment |
|:--|:--|
| xEventGroupClearBits()  | イベントグループのbitsをクリアする  |
| xEventGroupClearBitsFromISR()  |  イベントグループのbitsをクリアする |
| xEventGroupCreate()  | イベントグループを生成する  |
| xEventGroupCreateStatic()  |  静的なメモリを使ってイベントグループを生成する |
| vEventGroupDelete()  | イベントグループを削除する  |
| xEventGroupGetBits()  | イベントグループの値を取得する  |
| xEventGroupGetBitsFromISR()  | イベントグループの値を取得する  |
| xEventGroupSetBits()  | イベントグループの値を設定する  |
| xEventGroupSetBitsFromISR()  | イベントグループの値を設定する  |
| xEventGroupSync()  | ある値になるまでかタイムアウトを待って、イベントグループに値を設定する。  |
| xEventGroupWaitBits()  | イベントグループがある値になるかタイムアウトまで待つ  |

## Stream Buffer

| API | Comment |
|:--|:--|
| xStreamBufferCreate()  | ストリームバッファを生成する  |
| xStreamBufferCreateStatic()  | 静的メモリを使ってストリームバッファを生成する  |
| xStreamBufferSend()  | ストリームバッファにデータを書き込む  |
| xStreamBufferSendFromISR()  | ストリームバッファにデータを書き込む  |
| xStreamBufferReceive()  | ストリームバッファからデータを読み込む  |
| xStreamBufferReceiveFromISR()  | ストリームバッファからデータを読み込む  |
| vStreamBufferDelete()  | ストリームバッファを削除する  |
| xStreamBufferIsFull()  | ストリームバッファが満杯かどうか確認する  |
| xStreamBufferIsEmpty()  | ストリームバッファが空かどうか確認する  |
| xStreamBufferReset()  | ストリームバッファを空にリセットする  |
| xStreamBufferSpacesAvailable()  | ストリームバッファの空きサイズを取得する  |
| xStreamBufferBytesAvailable()  | ストリームバッファが保持しているデータサイズを取得する  |
| xStreamBufferSetTriggerLevel()  | ストリームバッファのトリガレベルを設定する  |

## Message Buffer

| API | Comment |
|:--|:--|
| xMessageBufferCreate()  | メッセージバッファを生成する  |
| xMessageBufferCreateStatic()  | 静的メモリを使ってッセージバッファを生成する |
| xMessageBufferSend()  | メッセージバッファにデータを書き込む   |
| xMessageBufferSendFromISR()  | メッセージバッファにデータを書き込む  |
| xMessageBufferReceive()  | メッセージバッファからデータを読み込む   |
| xMessageBufferReceiveFromISR()  | メッセージバッファからデータを読み込む  |
| vMessageBufferDelete()  | メッセージバッファを削除する   |
| xMessageBufferIsFull()  | メッセージバッファが満杯かどうか確認する   |
| xMessageBufferIsEmpty()  | メッセージバッファが空かどうか確認する  |
| xMessageBufferReset()  | メッセージバッファを空にリセットする   |
| xMessageBufferSpaceAvailable()  | メッセージバッファの空きサイズを取得する  |


# AWS

## aws_crypto

| API | Comment |
|:--|:--|
| CRYPTO_ConfigureHeap()   | 暗号処理用のHeapを確保する  |
| CRYPTO_SignatureVerificationStart()  | 署名の検証を開始する  |
| CRYPTO_SignatureVerificationUpdate()  | 署名の追加データを検証する  |
| CRYPTO_SignatureVerificationFinal()  | 署名の検証を終了する  |

## aws_greengrass_discovery

| API | Comment |
|:--|:--|
| GGD_GetGGCIPandCertificate()  | green grass に接続する  |
| GGD_JSONRequestStart()  | クラウドからJSONファイルの取得を開始する  |
| GGD_JSONRequestGetSize()  | クラウドからJSONファイルのサイズを取得する  |
| GGD_JSONRequestGetFile()  | クラウドからJSONファイルを取得する  |
| GGD_JSONRequestAbort()  | クラウドからJSONファイルの取得を中止する  |
| GGD_GetIPandCertificateFromJSON()  | JSONファイルからホストIPと証明書を取得する  |

## aws_mqtt_lib

| API | Comment |
|:--|:--|
| MQTT_Init()  | MQTTを初期化する  |
| MQTT_Connect()   | MQTT Connectを送信する  |
| MQTT_Disconnect()  | MQTT Disonnectを送信する   |
| MQTT_Subscribe()  | MQTT Subscribeを送信する  |
| MQTT_Unsubscribe()  | MQTT Unsubscribeを送信する   |
| MQTT_Publish()   | MQTT Publishを送信する  |
| MQTT_ParseReceivedData()  | 受信したMQTT メッセージを復号する  |
| MQTT_ReturnBuffer()   | コールバックで提供されたバッファを解放する  |
| MQTT_Periodic()  | タイムアウトとキープアライブを管理する  |

## aws_secure_socket

| API | Comment |
|:--|:--|
| lib_initDECLARE_LIB_INIT()  | Secure Socketsライブラリを初期化する  |
| SOCKETS_Socket()   | TCPソケットを生成する  |
| SOCKETS_Connect()   | ソケットを指定したIPアドレスとポートに接続する  |
| SOCKETS_Recv()  | TCPソケットからデータを受信する  |
| SOCKETS_Send()  | リモートソケットにデータを送信する  |
| SOCKETS_Shutdown()   | ソケットの全二重通信を閉じる  |
| SOCKETS_Close()  | ソケットを解放する  |
| SOCKETS_SetSockOpt()  | ソケットオプションを設定する  |
| SOCKETS_GetHostByName()  | DNSを使ってホスト名を解決する  |

## aws_shadow

| API | Comment |
|:--|:--|
| SHADOW_ClientCreate()  | Shadowクライアントを生成する  |
| SHADOW_ClientConnect()  | Shadowサービスに接続する  |
| SHADOW_ClientDisconnect()  | Shadowサービスから切断する  |
| SHADOW_ClientDelete()  | Shadowクライアントを削除する  |
| SHADOW_Update()  | Thing Shadowをアップデートする  |
| SHADOW_Get()  | クラウドからThing Shadowを取得する  |
| SHADOW_Delete()  | クラウドのThing Shadowを削除する  |
| SHADOW_RegisterCallbacks()  | コールバック関数の登録  |
| SHADOW_ReturnMQTTBuffer()  | MQTT Bufferを返却する  |

## aws_system_init

| API | Comment |
|:--|:--|
|SYSTEM_Init() | システムを初期化する |

## aws_tls

| API | Comment |
|:--|:--|
| TLS_Init()  | TLSを初期化する  |
| TLS_Connect()  | TLSで接続する  |
| TLS_Recv()  | TLSで受信する  |
| TLS_Send()  | TLSで送信する  |
| TLS_Cleanup()  | TLSを削除する  |

## aws_wifi

| API | Comment |
|:--|:--|
| WIFI_On()  | Wi-FiをONにする  |
| WIFI_Off()  | Wi-FiをOffにする  |
| WIFI_ConnectAP() | APに接続する |
| WIFI_Disconnect() | AP接続を切断する |
| WIFI_Reset()  | Wi-Fiモジュールをリセットする  |
| WIFI_SetMode()  | Wi-Fiのモードを設定する  |
| WIFI_GetMode()  | Wi-Fiのモードを設定する  |
| WIFI_NetworkAdd ()  | ネットワークの設定を追加する  |
| WIFI_NetworkGet()  | ネットワークの設定を取得する  |
| WIFI_NetworkDelete()  | ネットワークの設定を削除する  |
| WIFI_Ping()  | pingを行う  |
| WIFI_GetIP ()  | Wi-FiのIPアドレスを取得する  |
| WIFI_GetMAC()  | Wi-FiのMACアドレスを取得する  |
| WIFI_GetHostIP()  | 指定したホストのIPアドレスを取得する  |
| WIFI_Scan()  | Wi-Fiをscanする  |
| WIFI_StartAP()  | APをスタートする  |
| WIFI_StopAP()  | APをストップする  |
| WIFI_ConfigureAP ()  | APの設定をする  |
| WIFI_SetPMMode()  | 省電力モードの設定をする  |
| WIFI_GetPMMode()  | 省電力モードの設定を取得する  |