void requestTask(void* parameter) {
Serial.printf("[Core %d] 🧵 Request Task started\\n", xPortGetCoreID()); // ตรวจสอบว่ารันบน Core 0
// Phase 1: Initial buffer fill (เติมบัฟเฟอร์ให้เต็ม 90% ก่อนเริ่มเล่น)
while (getBufferCount() < AMBIENT_BUFFER_SIZE * 0.9 && requestTaskRunning) {
if (!isRequestingNewChunk && WiFi.status() == WL_CONNECTED) {
requestAmbientChunk(false);
vTaskDelay(500 / portTICK_PERIOD_MS); // หน่วง 500ms หลังร้องขอ
}
vTaskDelay(100 / portTICK_PERIOD_MS); // หน่วง 100ms ตรวจสอบสถานะ
}
Serial.println("✅ Initial buffer filled!");
// Phase 2: Maintenance loop (วนรักษาระดับบัฟเฟอร์)
while (requestTaskRunning) {
if (currentMode == MODE_AMBIENT || currentMode == MODE_PLAYING_SEED) {
if (shouldRequestNewChunk()) {
requestAmbientChunk(false);
}
vTaskDelay(200 / portTICK_PERIOD_MS); // หน่วง 200ms ในโหมดปกติ
} else {
vTaskDelay(1000 / portTICK_PERIOD_MS); // หน่วงนานขึ้นเมื่อไม่ได้ใช้งาน
}
}
vTaskDelete(NULL); // ลบตัวเองเมื่อจบการทำงาน
}