From ba36580f627253be0cff2f72149f6bb564f33930 Mon Sep 17 00:00:00 2001 From: Reimanbow Date: Fri, 13 Feb 2026 05:59:08 +0900 Subject: [PATCH 1/4] add: chunker --- .github/workflows/ci.yml | 10 + CMakeLists.txt | 2 +- include/cast_protocol.h | 43 +++-- src/cast_chunker.c | 65 +++++++ src/cast_internal.h | 11 +- src/cast_protocol.c | 16 -- test/host/CMakeLists.txt | 5 +- test/host/mocks/esp_err.h | 5 +- test/host/test_cast_chunker.cpp | 321 +++++++++++++++++++++++++++++++ test/host/test_cast_protocol.cpp | 15 -- 10 files changed, 435 insertions(+), 58 deletions(-) create mode 100644 src/cast_chunker.c delete mode 100644 src/cast_protocol.c create mode 100644 test/host/test_cast_chunker.cpp delete mode 100644 test/host/test_cast_protocol.cpp diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a65c2e1..13e77b8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,16 @@ on: branches: [main] jobs: + host-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Run host tests + run: | + cmake -S test/host -B test/host/build + cmake --build test/host/build + test/host/build/host_test + build-example: runs-on: ubuntu-latest strategy: diff --git a/CMakeLists.txt b/CMakeLists.txt index fa07d44..2447ec2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ idf_component_register( - SRCS "src/cast_protocol.c" + SRCS "src/cast_chunker.c" INCLUDE_DIRS "include" REQUIRES "" ) diff --git a/include/cast_protocol.h b/include/cast_protocol.h index 2b428f4..5f4022c 100644 --- a/include/cast_protocol.h +++ b/include/cast_protocol.h @@ -1,28 +1,47 @@ -#pragma once +/** + * @file cast_protocol.h + */ +#ifndef CAST_PROTOCOL_H +#define CAST_PROTOCOL_H #include "esp_err.h" +#include +#include + +#include "cast_itransport.h" #ifdef __cplusplus extern "C" { #endif /** - * @brief Initialize the cast protocol - * - * @return - * - ESP_OK on success - * - ESP_FAIL on failure + * @brief 送信する画像のフォーマット情報 */ -esp_err_t cast_protocol_init(void); +typedef enum { + CAST_FMT_JPEG = 0, + CAST_FMT_RGB565 = 1, + CAST_FMT_GRAYSCALE = 2, + CAST_FMT_NONE = 255 // 制御パケット用 +} cast_image_format_t; /** - * @brief Deinitialize the cast protocol - * - * @return - * - ESP_OK on success + * @brief 画像を複数チャンクに分割し送信する + * MTUは各無線通信規格によりある程度決められている + * @param data 送信するデータのポインタ + * @param len データ長 + * @param fmt 画像のフォーマット + * @param transport 無線規格の振る舞い + * @return esp_err_t 送信成否(ESP_OK, ESP_FAILなど) */ -esp_err_t cast_protocol_deinit(void); +esp_err_t cast_send_frame( + const uint8_t *data, + size_t len, + cast_image_format_t fmt, + cast_transport_interface_t *transport +); #ifdef __cplusplus } #endif + +#endif /* CAST_PROTOCOL_H */ \ No newline at end of file diff --git a/src/cast_chunker.c b/src/cast_chunker.c new file mode 100644 index 0000000..558c095 --- /dev/null +++ b/src/cast_chunker.c @@ -0,0 +1,65 @@ +/** + * @file cast_chunker.c + */ +#include "cast_protocol.h" +#include "cast_internal.h" + +#include +#include + +esp_err_t cast_send_frame( + const uint8_t *data, + size_t len, + cast_image_format_t fmt, + cast_transport_interface_t *transport +) { + static uint16_t frame_counter = 0; + const size_t mtu = transport->get_mtu(); + const size_t max_payload = mtu - CAST_PROTOCOL_OVERHEAD; + + // 総チャンク数の計算(切り上げ) + uint16_t total_chunks = (len + max_payload - 1) / max_payload; + + // 送信用の一時バッファ(MTUサイズ分確保) + uint8_t *packet_buf = (uint8_t *)malloc(mtu); + if (!packet_buf) return ESP_ERR_NO_MEM; + + size_t sent_bytes = 0; + + for (uint16_t i = 0; i < total_chunks; i++) { + // 残りデータ量と最大ペイロードの小さい方を今回のサイズにする + size_t current_payload_len = (len - sent_bytes > max_payload) ? max_payload : (len - sent_bytes); + + // 1. ヘッダの組み立て + cast_header_t *header = (cast_header_t *)packet_buf; + header->magic = CAST_MAGIC_BYTE; + header->type = CAST_PKT_TYPE_DATA; + header->format = fmt; + header->frame_id = frame_counter; + header->chunk_index = i; + header->total_chunks = total_chunks; + header->payload_len = (uint16_t)current_payload_len; + + // 2. データのコピー(ヘッダの直後へ) + memcpy(packet_buf + sizeof(cast_header_t), data + sent_bytes, current_payload_len); + + // 3. トレーラ(CRC)の付与(今は0固定) + uint16_t crc = 0; + memcpy(packet_buf + sizeof(cast_header_t) + current_payload_len, &crc, 2); + + // 4. 送信 + size_t total_packet_len = sizeof(cast_header_t) + current_payload_len + 2; + esp_err_t err = transport->send(packet_buf, total_packet_len); + + if (err != ESP_OK) { + free(packet_buf); + return err; + } + + sent_bytes += current_payload_len; + } + + free(packet_buf); + frame_counter++; + return ESP_OK; +} \ No newline at end of file diff --git a/src/cast_internal.h b/src/cast_internal.h index 0c4266a..8608185 100644 --- a/src/cast_internal.h +++ b/src/cast_internal.h @@ -5,6 +5,7 @@ #define CAST_INTERNAL_H #include +#include "cast_protocol.h" #define CAST_MAGIC_BYTE 0xCA // CASTプロトコルの識別用 @@ -18,16 +19,6 @@ typedef enum { CAST_PKT_TYPE_CTRL = 3 // 戦略変更命令 } cast_packet_type_t; -/** - * @brief 送信する画像のフォーマット情報 - */ -typedef enum { - CAST_FMT_JPEG = 0, - CAST_FMT_RGB565 = 1, - CAST_FMT_GRAYSCALE = 2, - CAST_FMT_NONE = 255 // 制御パケット用 -} cast_image_format_t; - /** * @brief CASTプロトコル共通ヘッダ (11バイト) * * [フィールド再利用(Overloading)の設計指針] diff --git a/src/cast_protocol.c b/src/cast_protocol.c deleted file mode 100644 index c619a0f..0000000 --- a/src/cast_protocol.c +++ /dev/null @@ -1,16 +0,0 @@ -#include "cast_protocol.h" -#include "esp_log.h" - -static const char *TAG = "cast_protocol"; - -esp_err_t cast_protocol_init(void) -{ - ESP_LOGI(TAG, "Initializing cast protocol"); - return ESP_OK; -} - -esp_err_t cast_protocol_deinit(void) -{ - ESP_LOGI(TAG, "Deinitializing cast protocol"); - return ESP_OK; -} diff --git a/test/host/CMakeLists.txt b/test/host/CMakeLists.txt index 144a087..a402e4b 100644 --- a/test/host/CMakeLists.txt +++ b/test/host/CMakeLists.txt @@ -14,16 +14,17 @@ FetchContent_MakeAvailable(googletest) # Component source (compiled as C) add_library(component STATIC - ../../src/cast_protocol.c + ../../src/cast_chunker.c ) target_include_directories(component PUBLIC ../../include + ../../src mocks ) # Test executable add_executable(host_test - test_cast_protocol.cpp + test_cast_chunker.cpp ) target_link_libraries(host_test PRIVATE component GTest::gtest_main) diff --git a/test/host/mocks/esp_err.h b/test/host/mocks/esp_err.h index 64b43a1..bae0dbe 100644 --- a/test/host/mocks/esp_err.h +++ b/test/host/mocks/esp_err.h @@ -2,5 +2,6 @@ typedef int esp_err_t; -#define ESP_OK 0 -#define ESP_FAIL (-1) +#define ESP_OK 0 +#define ESP_FAIL (-1) +#define ESP_ERR_NO_MEM 0x101 diff --git a/test/host/test_cast_chunker.cpp b/test/host/test_cast_chunker.cpp new file mode 100644 index 0000000..7382d8a --- /dev/null +++ b/test/host/test_cast_chunker.cpp @@ -0,0 +1,321 @@ +#include +#include +#include + +extern "C" { +#include "cast_protocol.h" +#include "cast_internal.h" +} + +// --------------------------------------------------------------------------- +// Mock transport +// --------------------------------------------------------------------------- + +// キャプチャしたパケットを保持するグローバル変数 +static std::vector> g_captured_packets; +static size_t g_mock_mtu = 64; +static esp_err_t g_send_return = ESP_OK; +static int g_send_fail_at = -1; // N番目のsendで失敗させる (-1=失敗しない) + +static esp_err_t mock_send(const uint8_t *data, size_t len) +{ + if (g_send_fail_at >= 0 && + (int)g_captured_packets.size() == g_send_fail_at) { + return ESP_FAIL; + } + g_captured_packets.emplace_back(data, data + len); + return g_send_return; +} + +static size_t mock_get_mtu(void) { return g_mock_mtu; } +static int16_t mock_get_rssi(void) { return -50; } +static bool mock_is_connected(void) { return true; } +static bool mock_is_ready(void) { return true; } +static esp_err_t mock_set_recv_cb(void (*)(const uint8_t *, size_t)) { return ESP_OK; } + +static cast_transport_interface_t g_mock_transport = { + .send = mock_send, + .get_mtu = mock_get_mtu, + .get_rssi = mock_get_rssi, + .is_connected = mock_is_connected, + .is_ready = mock_is_ready, + .set_recv_callback = mock_set_recv_cb, +}; + +// --------------------------------------------------------------------------- +// ヘルパー +// --------------------------------------------------------------------------- + +static const cast_header_t *packet_header(size_t index) +{ + return reinterpret_cast(g_captured_packets[index].data()); +} + +static const uint8_t *packet_payload(size_t index) +{ + return g_captured_packets[index].data() + sizeof(cast_header_t); +} + +// --------------------------------------------------------------------------- +// テストフィクスチャ +// --------------------------------------------------------------------------- + +class ChunkerTest : public ::testing::Test { +protected: + void SetUp() override + { + g_captured_packets.clear(); + g_mock_mtu = 64; + g_send_return = ESP_OK; + g_send_fail_at = -1; + } +}; + +// =========================================================================== +// ① チャンク分割数の計算テスト +// =========================================================================== + +// データが max_payload の倍数 → 端数なし +TEST_F(ChunkerTest, ExactFitChunkCount) +{ + // MTU=64, overhead=sizeof(cast_header_t)+2=13, max_payload=51 + // データ102バイト → 102/51 = ちょうど2チャンク + const size_t max_payload = g_mock_mtu - CAST_PROTOCOL_OVERHEAD; + const size_t data_len = max_payload * 2; + std::vector data(data_len, 0xAA); + + esp_err_t ret = cast_send_frame(data.data(), data.size(), CAST_FMT_JPEG, &g_mock_transport); + + EXPECT_EQ(ret, ESP_OK); + EXPECT_EQ(g_captured_packets.size(), 2u); +} + +// データが max_payload の倍数でない → 端数あり +TEST_F(ChunkerTest, PartialLastChunkCount) +{ + // max_payload=51, データ100バイト → ceil(100/51) = 2チャンク + std::vector data(100, 0xBB); + + esp_err_t ret = cast_send_frame(data.data(), data.size(), CAST_FMT_JPEG, &g_mock_transport); + + EXPECT_EQ(ret, ESP_OK); + EXPECT_EQ(g_captured_packets.size(), 2u); +} + +// データが max_payload 未満 → 1チャンク +TEST_F(ChunkerTest, SingleChunk) +{ + std::vector data(10, 0xCC); + + esp_err_t ret = cast_send_frame(data.data(), data.size(), CAST_FMT_JPEG, &g_mock_transport); + + EXPECT_EQ(ret, ESP_OK); + EXPECT_EQ(g_captured_packets.size(), 1u); +} + +// 3チャンクに分割されるケース +TEST_F(ChunkerTest, ThreeChunks) +{ + // max_payload=51, データ130バイト → ceil(130/51) = 3チャンク (51+51+28) + std::vector data(130, 0xDD); + + esp_err_t ret = cast_send_frame(data.data(), data.size(), CAST_FMT_JPEG, &g_mock_transport); + + EXPECT_EQ(ret, ESP_OK); + EXPECT_EQ(g_captured_packets.size(), 3u); +} + +// =========================================================================== +// ② ヘッダの一貫性テスト +// =========================================================================== + +TEST_F(ChunkerTest, HeaderConsistency) +{ + std::vector data(130, 0x00); + + cast_send_frame(data.data(), data.size(), CAST_FMT_RGB565, &g_mock_transport); + + ASSERT_EQ(g_captured_packets.size(), 3u); + + const auto *h0 = packet_header(0); + const auto *h1 = packet_header(1); + const auto *h2 = packet_header(2); + + // magic は全パケットで 0xCA + EXPECT_EQ(h0->magic, CAST_MAGIC_BYTE); + EXPECT_EQ(h1->magic, CAST_MAGIC_BYTE); + EXPECT_EQ(h2->magic, CAST_MAGIC_BYTE); + + // type は全パケットで DATA + EXPECT_EQ(h0->type, CAST_PKT_TYPE_DATA); + EXPECT_EQ(h1->type, CAST_PKT_TYPE_DATA); + EXPECT_EQ(h2->type, CAST_PKT_TYPE_DATA); + + // format は渡した値と一致 + EXPECT_EQ(h0->format, CAST_FMT_RGB565); + EXPECT_EQ(h1->format, CAST_FMT_RGB565); + EXPECT_EQ(h2->format, CAST_FMT_RGB565); + + // frame_id は同一フレーム内で全て同じ + EXPECT_EQ(h0->frame_id, h1->frame_id); + EXPECT_EQ(h1->frame_id, h2->frame_id); + + // total_chunks は全パケットで同じ値(3) + EXPECT_EQ(h0->total_chunks, 3); + EXPECT_EQ(h1->total_chunks, 3); + EXPECT_EQ(h2->total_chunks, 3); + + // chunk_index が 0, 1, 2 と連番 + EXPECT_EQ(h0->chunk_index, 0); + EXPECT_EQ(h1->chunk_index, 1); + EXPECT_EQ(h2->chunk_index, 2); +} + +// =========================================================================== +// ③ ペイロード境界テスト +// =========================================================================== + +TEST_F(ChunkerTest, PayloadBoundary) +{ + const size_t max_payload = g_mock_mtu - CAST_PROTOCOL_OVERHEAD; + + // 0, 1, 2, ... , 129 の連番データ + std::vector data(130); + for (size_t i = 0; i < data.size(); i++) { + data[i] = (uint8_t)(i & 0xFF); + } + + cast_send_frame(data.data(), data.size(), CAST_FMT_JPEG, &g_mock_transport); + + ASSERT_EQ(g_captured_packets.size(), 3u); + + // 各チャンクの payload_len を確認 + const size_t expect_len0 = max_payload; // 51 + const size_t expect_len1 = max_payload; // 51 + const size_t expect_len2 = 130 - max_payload * 2; // 28 + + EXPECT_EQ(packet_header(0)->payload_len, expect_len0); + EXPECT_EQ(packet_header(1)->payload_len, expect_len1); + EXPECT_EQ(packet_header(2)->payload_len, expect_len2); + + // チャンク0の末尾とチャンク1の先頭が連続しているか + const uint8_t *p0 = packet_payload(0); + const uint8_t *p1 = packet_payload(1); + EXPECT_EQ(p0[0], 0); // 先頭 + EXPECT_EQ(p0[max_payload - 1], max_payload - 1); // チャンク0の末尾 + EXPECT_EQ(p1[0], max_payload); // チャンク1の先頭 = チャンク0の続き + + // チャンク2(最後)の先頭と末尾 + const uint8_t *p2 = packet_payload(2); + EXPECT_EQ(p2[0], (uint8_t)(max_payload * 2)); + EXPECT_EQ(p2[expect_len2 - 1], 129); + + // 全ペイロードを結合して元データと一致するか + std::vector reassembled; + for (size_t i = 0; i < g_captured_packets.size(); i++) { + const uint8_t *payload = packet_payload(i); + uint16_t plen = packet_header(i)->payload_len; + reassembled.insert(reassembled.end(), payload, payload + plen); + } + EXPECT_EQ(reassembled.size(), data.size()); + EXPECT_EQ(reassembled, data); +} + +// =========================================================================== +// ④ frame_id インクリメントテスト +// =========================================================================== + +TEST_F(ChunkerTest, FrameIdIncrements) +{ + std::vector data(10, 0xFF); + + // 1回目 + cast_send_frame(data.data(), data.size(), CAST_FMT_JPEG, &g_mock_transport); + ASSERT_EQ(g_captured_packets.size(), 1u); + uint16_t frame_id_1 = packet_header(0)->frame_id; + + // 2回目 + g_captured_packets.clear(); + cast_send_frame(data.data(), data.size(), CAST_FMT_JPEG, &g_mock_transport); + ASSERT_EQ(g_captured_packets.size(), 1u); + uint16_t frame_id_2 = packet_header(0)->frame_id; + + EXPECT_EQ(frame_id_2, frame_id_1 + 1); +} + +// =========================================================================== +// ⑤ 送信失敗テスト +// =========================================================================== + +// 2番目のsendで失敗 → 即座にエラーを返し、残りは送らない +TEST_F(ChunkerTest, SendFailureMidway) +{ + std::vector data(130, 0xEE); // 3チャンク + g_send_fail_at = 1; // 2番目(index=1)のsendで失敗 + + esp_err_t ret = cast_send_frame(data.data(), data.size(), CAST_FMT_JPEG, &g_mock_transport); + + EXPECT_EQ(ret, ESP_FAIL); + // 1番目のパケットだけキャプチャされている(2番目で失敗したのでpushされない) + EXPECT_EQ(g_captured_packets.size(), 1u); +} + +// 最初のsendで失敗 +TEST_F(ChunkerTest, SendFailureOnFirst) +{ + std::vector data(10, 0x00); + g_send_fail_at = 0; + + esp_err_t ret = cast_send_frame(data.data(), data.size(), CAST_FMT_JPEG, &g_mock_transport); + + EXPECT_EQ(ret, ESP_FAIL); + EXPECT_EQ(g_captured_packets.size(), 0u); +} + +// =========================================================================== +// ⑥ パケットサイズがMTUを超えないことの確認 +// =========================================================================== + +TEST_F(ChunkerTest, PacketSizeNeverExceedsMtu) +{ + std::vector data(500, 0x42); + + cast_send_frame(data.data(), data.size(), CAST_FMT_JPEG, &g_mock_transport); + + for (size_t i = 0; i < g_captured_packets.size(); i++) { + EXPECT_LE(g_captured_packets[i].size(), g_mock_mtu) + << "Packet " << i << " exceeds MTU"; + } +} + +// =========================================================================== +// ⑦ 異なるMTUでの動作確認 +// =========================================================================== + +TEST_F(ChunkerTest, SmallMtu) +{ + g_mock_mtu = 24; // overhead=13 → max_payload=11 + const size_t max_payload = g_mock_mtu - CAST_PROTOCOL_OVERHEAD; + std::vector data(50, 0x11); + + cast_send_frame(data.data(), data.size(), CAST_FMT_GRAYSCALE, &g_mock_transport); + + size_t expected_chunks = (50 + max_payload - 1) / max_payload; + EXPECT_EQ(g_captured_packets.size(), expected_chunks); + + for (size_t i = 0; i < g_captured_packets.size(); i++) { + EXPECT_LE(g_captured_packets[i].size(), g_mock_mtu); + } +} + +TEST_F(ChunkerTest, LargeMtu) +{ + g_mock_mtu = 250; // ESP-NOW相当 + std::vector data(200, 0x22); + + cast_send_frame(data.data(), data.size(), CAST_FMT_JPEG, &g_mock_transport); + + // max_payload=237, 200 < 237 → 1チャンク + EXPECT_EQ(g_captured_packets.size(), 1u); + EXPECT_EQ(packet_header(0)->payload_len, 200); +} diff --git a/test/host/test_cast_protocol.cpp b/test/host/test_cast_protocol.cpp deleted file mode 100644 index 1c99786..0000000 --- a/test/host/test_cast_protocol.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include - -extern "C" { -#include "cast_protocol.h" -} - -TEST(CastProtocol, InitReturnsOk) -{ - EXPECT_EQ(ESP_OK, cast_protocol_init()); -} - -TEST(CastProtocol, DeinitReturnsOk) -{ - EXPECT_EQ(ESP_OK, cast_protocol_deinit()); -} From 4cbae712e8de49de04262468345ab2f6b1c7dea2 Mon Sep 17 00:00:00 2001 From: Reimanbow Date: Fri, 13 Feb 2026 06:02:04 +0900 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20stdbool.h=E3=82=92=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=AF=E3=83=AB=E3=83=BC=E3=83=89=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/cast_itransport.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/cast_itransport.h b/include/cast_itransport.h index 1165c8d..52f99d0 100644 --- a/include/cast_itransport.h +++ b/include/cast_itransport.h @@ -7,6 +7,7 @@ #include "esp_err.h" #include #include +#include /** * @brief CASTトランスポートインタフェース構造体 From cfbf651f9d759b3ed83663b62e413c73385171e7 Mon Sep 17 00:00:00 2001 From: Reimanbow Date: Fri, 13 Feb 2026 06:08:14 +0900 Subject: [PATCH 3/4] =?UTF-8?q?fixed:=20=E3=83=86=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=81=A7=E5=AD=98=E5=9C=A8=E3=81=97=E3=81=AA=E3=81=84=E3=82=82?= =?UTF-8?q?=E3=81=AE=E3=82=92=E5=8F=82=E7=85=A7=E3=81=97=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/main/test_cast_protocol.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/test/main/test_cast_protocol.c b/test/main/test_cast_protocol.c index 5db2b44..b6d8072 100644 --- a/test/main/test_cast_protocol.c +++ b/test/main/test_cast_protocol.c @@ -1,18 +1,13 @@ #include "unity.h" #include "cast_protocol.h" -TEST_CASE("init and deinit", "[cast_protocol]") +TEST_CASE("header size is 11 bytes", "[cast_protocol]") { - TEST_ASSERT_EQUAL(ESP_OK, cast_protocol_init()); - TEST_ASSERT_EQUAL(ESP_OK, cast_protocol_deinit()); + // cast_protocol.h が正しくincludeできることの確認 + // 実機テストは今後追加 + TEST_ASSERT_EQUAL(CAST_FMT_JPEG, 0); } -// TODO: Add more test cases here -// TEST_CASE("test description", "[cast_protocol]") -// { -// TEST_ASSERT_TRUE(condition); -// } - void app_main(void) { UNITY_BEGIN(); From 71ce774a840ffd693ba6fd09afef0a58b97b17cf Mon Sep 17 00:00:00 2001 From: Reimanbow Date: Fri, 13 Feb 2026 06:14:10 +0900 Subject: [PATCH 4/4] =?UTF-8?q?remove:=20examples=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 19 ------------------- examples/basic/CMakeLists.txt | 4 ---- examples/basic/main/CMakeLists.txt | 4 ---- examples/basic/main/idf_component.yml | 4 ---- examples/basic/main/main.c | 11 ----------- 5 files changed, 42 deletions(-) delete mode 100644 examples/basic/CMakeLists.txt delete mode 100644 examples/basic/main/CMakeLists.txt delete mode 100644 examples/basic/main/idf_component.yml delete mode 100644 examples/basic/main/main.c diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 13e77b8..bf382c7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,25 +23,6 @@ jobs: cmake --build test/host/build test/host/build/host_test - build-example: - runs-on: ubuntu-latest - strategy: - matrix: - idf_version: - - "v5.4" - target: - - esp32s3 - container: - image: espressif/idf:${{ matrix.idf_version }} - steps: - - uses: actions/checkout@v4 - - name: Build example - working-directory: examples/basic - run: | - . $IDF_PATH/export.sh - idf.py set-target ${{ matrix.target }} - idf.py build - build-test: runs-on: ubuntu-latest strategy: diff --git a/examples/basic/CMakeLists.txt b/examples/basic/CMakeLists.txt deleted file mode 100644 index a64a307..0000000 --- a/examples/basic/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -cmake_minimum_required(VERSION 3.16) - -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(cast_protocol_basic_example) diff --git a/examples/basic/main/CMakeLists.txt b/examples/basic/main/CMakeLists.txt deleted file mode 100644 index 0c05b5f..0000000 --- a/examples/basic/main/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -idf_component_register( - SRCS "main.c" - INCLUDE_DIRS "." -) diff --git a/examples/basic/main/idf_component.yml b/examples/basic/main/idf_component.yml deleted file mode 100644 index 9f06106..0000000 --- a/examples/basic/main/idf_component.yml +++ /dev/null @@ -1,4 +0,0 @@ -dependencies: - cast_protocol: - version: "*" - override_path: "../../../" diff --git a/examples/basic/main/main.c b/examples/basic/main/main.c deleted file mode 100644 index 7d50da7..0000000 --- a/examples/basic/main/main.c +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include "cast_protocol.h" - -void app_main(void) -{ - ESP_ERROR_CHECK(cast_protocol_init()); - - // Your application code here - - ESP_ERROR_CHECK(cast_protocol_deinit()); -}