|
SDK สำหรับ TESAIoT Dev Kit
คู่มืออ้างอิง API และ Tutorial (MTB & µPython)
|
Functions | |
| bool | wifi_saved_probe_start (void) |
| ส่ง probe ตรวจการมีอยู่ของ OPTIGA; ต้องเรียงลำดับ start → ready → finish อย่างเคร่งครัด | |
| bool | wifi_saved_probe_ready (void) |
| อาจเป็น true ทันทีหลัง probe_start() — ต้องรองรับเส้นทางลัดที่มาจากผลที่แคชไว้ | |
| void | wifi_saved_probe_finish (void) |
| เรียกเพียงครั้งเดียวต่อหนึ่ง probe และเฉพาะหลัง probe_ready() เท่านั้น; เป็นตัวตั้งสถานะ OPTIGA / RAM-fallback | |
| bool | wifi_saved_read_start (int index) |
| มีการอ่าน slot ค้างอยู่ได้ครั้งละหนึ่งรายการเท่านั้น; การคืนค่า false หมายถึงข้าม slot นั้นไป | |
| bool | wifi_saved_read_ready (void) |
| ยังไม่พร้อมหมายถึงให้ลองใหม่ใน tick ถัดไป | |
| bool | wifi_saved_read_result (wifi_saved_entry_t *out) |
| เติมข้อมูลลงในรายการที่ผู้เรียกเป็นเจ้าของ; false หมายถึงไม่มีข้อมูลใน slot นั้น | |
| int | wifi_saved_find (const char *ssid) |
| Find a saved network by SSID. | |
| bool | wifi_saved_erase (int index) |
| Erase a saved network from OPTIGA slot. | |
| bool | wifi_saved_add (const char *ssid, const char *password, uint8_t security) |
| Add or update a network in saved list. If SSID already exists, updates in-place. If not, uses the first empty slot (or overwrites slot 0 if full). | |
| int | wifi_saved_load_all (wifi_saved_entry_t *entries) |
| Load all saved networks into an array. | |
| bool | wifi_saved_load (int index, wifi_saved_entry_t *out) |
| Load a saved network from OPTIGA slot. | |
| bool | wifi_saved_store (int index, const wifi_saved_entry_t *entry) |
| Store a network entry to OPTIGA slot. | |
| int | wifi_saved_count (void) |
| Count number of valid saved networks. | |
Header: wifi_saved.h ตัวโค้ดจริง: wifi_saved.c ที่อยู่ใน archive (libbento_cm55.a) เก็บได้สูงสุด WIFI_SAVED_MAX (6) รายการ รายการละ 106 ไบต์แบบ packed หนึ่งรายการต่อหนึ่ง OPTIGA Type 3 data object พร้อม LRU eviction (การไล่รายการที่ไม่ได้ใช้นานที่สุดออก) และมี RAM fallback เมื่อไม่มี OPTIGA อยู่ รูปแบบการเข้าถึงมี 2 แบบ และเทมเพลตใช้ทั้ง 2 แบบโดยเจตนา ได้แก่ wifi_saved_load_all() แบบ synchronous (~1.5 s ใช้สำหรับการรีเฟรชหลังการแก้ข้อมูล) และกลไก probe + การอ่าน slot แบบ asynchronous (ใช้ตอนโหลดหน้าครั้งแรกเพื่อไม่ให้หน้าจอบล็อก) ผู้เรียกฝั่งเทมเพลตของทุกอย่างในหัวข้อนี้คือ proj_cm55/modules/page-components/wifi_connect/demo/wifi_connect_native/wifi_connect_native.c และ callback ของมันทุกตัวจะตรวจ s_ctx.ui == NULL ซ้ำก่อนเสมอ เพราะหน้านี้อาจถูกทำลายไปแล้วขณะที่ IPC ยังทำงานค้างอยู่
| bool wifi_saved_probe_start | ( | void | ) |
ส่ง probe ตรวจการมีอยู่ของ OPTIGA; ต้องเรียงลำดับ start → ready → finish อย่างเคร่งครัด
probe_start() แล้ววนถาม probe_ready() แล้วจึง probe_finish() ผู้เรียกวนถามทุก 100 ms และลบ timer ของตัวเองก่อนเดินไปขั้นถัดไป ทำงานใน LVGL timer / GFX-task context | bool wifi_saved_probe_ready | ( | void | ) |
อาจเป็น true ทันทีหลัง probe_start() — ต้องรองรับเส้นทางลัดที่มาจากผลที่แคชไว้
probe_start() (เป็นผลที่แคชไว้) — ผู้เรียกต้องรองรับเส้นทางลัดนั้น แทนที่จะตั้ง timer สำหรับวนถามโดยไม่มีเงื่อนไข ซึ่งเป็นเหตุผลที่เทมเพลตมี call site (จุดที่มีการเรียกจริง) 2 จุด ทำงานใน GFX-task context | void wifi_saved_probe_finish | ( | void | ) |
เรียกเพียงครั้งเดียวต่อหนึ่ง probe และเฉพาะหลัง probe_ready() เท่านั้น; เป็นตัวตั้งสถานะ OPTIGA / RAM-fallback
probe_ready() คืนค่า true แล้วเท่านั้น ฟังก์ชันนี้เป็นตัวตั้งสถานะ OPTIGA / RAM-fallback ที่การอ่านทั้งหมดต้องอาศัย หลังจากเรียกแล้ว wifi_saved_load() จะข้ามขั้น probe ไป ทำงานใน GFX-task context | bool wifi_saved_read_start | ( | int | index | ) |
มีการอ่าน slot ค้างอยู่ได้ครั้งละหนึ่งรายการเท่านั้น; การคืนค่า false หมายถึงข้าม slot นั้นไป
read_ready() การคืนค่า false เป็นเส้นทางข้อผิดพลาดจริง — เทมเพลตจะข้าม slot นั้นแล้วเดินหน้าต่อ ไม่ลองใหม่และไม่ยกเลิกทั้งกระบวนการ เรียกได้เฉพาะหลังลำดับ probe เสร็จสิ้นแล้ว (callback ของ slot ถูกสร้างขึ้นหลัง probe_finish() เท่านั้น) ทำงานใน GFX-task context | bool wifi_saved_read_ready | ( | void | ) |
ยังไม่พร้อมหมายถึงให้ลองใหม่ใน tick ถัดไป
| bool wifi_saved_read_result | ( | wifi_saved_entry_t * | out | ) |
เติมข้อมูลลงในรายการที่ผู้เรียกเป็นเจ้าของ; false หมายถึงไม่มีข้อมูลใน slot นั้น
wifi_saved_entry_t บน stack ที่ผู้เรียกเป็นเจ้าของ ให้คัดลอกออกมาทันที การคืนค่า false ไม่ใช่ความผิดพลาดร้ายแรง — เพียงแต่ slot นั้นไม่ปรากฏในผลลัพธ์ และดัชนีจะเดินต่อไป ทำงานใน GFX-task context | int wifi_saved_find | ( | const char * | ssid | ) |
Find a saved network by SSID.
แปลง SSID เป็น slot ในที่เก็บ — ดัชนีในรายการบน UI ไม่ใช่ดัชนีของ slot
| ssid | SSID to search for |
< 0 เมื่อหาไม่พบ ภายในขับเคลื่อนด้วย wifi_saved_load() ชั้นที่เก็บ (probe) จึงต้องพร้อมทำงานอยู่ก่อนแล้ว | bool wifi_saved_erase | ( | int | index | ) |
Erase a saved network from OPTIGA slot.
ลบข้อมูลใน slot เดียวที่หาได้จาก wifi_saved_find(); การกู้คืนคือการรีเฟรชทั้งหมด
| index | Slot index 0..5 |
slot >= 0 ที่ได้จาก wifi_saved_find() ผู้เรียกที่มีอยู่จริงในของที่ส่งมอบละเลยค่า bool ที่คืนกลับมาโดยเจตนา เพราะการกู้คืนคือการรีเฟรช UI ทั้งหมดผ่าน wifi_saved_load_all() | bool wifi_saved_add | ( | const char * | ssid, |
| const char * | password, | ||
| uint8_t | security ) |
Add or update a network in saved list. If SSID already exists, updates in-place. If not, uses the first empty slot (or overwrites slot 0 if full).
บันทึกข้อมูลรับรองเฉพาะหลังยืนยันแล้วว่าการเชื่อมโยง (association) สำเร็จเท่านั้น
| ssid | Network SSID |
| password | Network password |
| security | Security type |
find, การเติมศูนย์, การปิดท้ายด้วย NUL ที่ ssid[32] / password[64], flags = 0x01 (auto-connect) และ last_used ล้วนเป็นงานภายในทั้งหมด (wifi_saved.c:266-304) และการเขียนลงที่เก็บทำผ่าน wifi_saved_store() ผู้เรียกที่มีอยู่จริงในของที่ส่งมอบไม่ตรวจค่าที่คืนกลับมา การรีเฟรชที่ตามมาจึงเป็นการตรวจสอบโดยพฤตินัย | int wifi_saved_load_all | ( | wifi_saved_entry_t * | entries | ) |
Load all saved networks into an array.
อ่านทั้งหมดแบบ synchronous (~1.5 s) ลงใน wifi_saved_entry_t[WIFI_SAVED_MAX]
| entries | Output array (must have WIFI_SAVED_MAX elements) |
wifi_saved_entry_t[WIFI_SAVED_MAX] เพราะไม่มีอาร์กิวเมนต์บอกความจุ คืนค่าเป็นจำนวนรายการที่เติมได้ (บีบให้ต่อเนื่องกันแล้ว) ไม่ใช่สถานะ นี่คือเส้นทางแบบ synchronous (วนเรียก wifi_saved_load() ใช้เวลา ~1.5 s — ดูคอมเมนต์ที่ wifi_connect_native.c:136-143) ใช้สำหรับการรีเฟรชหลังการแก้ข้อมูล ส่วนการโหลดหน้าครั้งแรกใช้กลไก probe + การอ่านแบบ async แทน ให้คงการแยกนี้ไว้ | bool wifi_saved_load | ( | int | index, |
| wifi_saved_entry_t * | out ) |
Load a saved network from OPTIGA slot.
อ่าน slot เดียวแบบ synchronous; เป็นฟังก์ชันภายใน — ผู้ใช้ไลบรารีให้ใช้ load_all()/find()
| index | Slot index 0..5 |
| out | Output entry (filled on success) |
wifi_saved.c ทั้งหมด (:252, :271, :282, :312, :325) ผู้ใช้ไลบรารีให้ใช้ wifi_saved_load_all() หรือ wifi_saved_find() ตัวอย่างที่เขียนขึ้นเองระบุไว้เช่นนั้น และแสดงเหตุผลอันชอบธรรมข้อเดียวที่จะหยิบฟังก์ชันนี้มาใช้ | bool wifi_saved_store | ( | int | index, |
| const wifi_saved_entry_t * | entry ) |
Store a network entry to OPTIGA slot.
เขียน slot เดียว; เป็นฟังก์ชันภายในของ wifi_saved_add() — การเรียกโดยตรงจะข้ามการ dedupe
| index | Slot index 0..5 |
| entry | Entry to write |
wifi_saved.c:304 จากภายใน wifi_saved_add() หลังจากฟังก์ชันนั้นประกอบรายการเสร็จแล้ว ผู้ใช้ไลบรารีให้ใช้ wifi_saved_add() การเรียกฟังก์ชันนี้โดยตรงจะข้ามการ dedupe, การปิดท้ายด้วย NUL และการประทับเวลาแบบ LRU | int wifi_saved_count | ( | void | ) |
Count number of valid saved networks.
คืนค่า 0..6; ไม่มีผู้เรียกเลยทั้ง workspace
wifi_saved_load_all() คืนกลับมาแทน เป็นตัวอย่างที่เขียนขึ้นเอง