Files @ 48d2337d76c2
Branch filter:

Location: protofusion-esp32-template/main/osc_control.c - annotation

Ethan Zonca
Functional OSC TX and RX
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
91735168ee75
48d2337d76c2
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
48d2337d76c2
48d2337d76c2
48d2337d76c2
33512a8a338c
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
33512a8a338c
48d2337d76c2
48d2337d76c2
48d2337d76c2
33512a8a338c
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
33512a8a338c
64275d7d6618
64275d7d6618
64275d7d6618
64275d7d6618
e4270e6d9529
e4270e6d9529
e4270e6d9529
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
e4270e6d9529
e4270e6d9529
e4270e6d9529
e4270e6d9529
33512a8a338c
e4270e6d9529
e4270e6d9529
33512a8a338c
e4270e6d9529
e4270e6d9529
e4270e6d9529
e4270e6d9529
e4270e6d9529
e4270e6d9529
33512a8a338c
e4270e6d9529
33512a8a338c
e4270e6d9529
e4270e6d9529
33512a8a338c
e4270e6d9529
45c4b4d15fc5
45c4b4d15fc5
45c4b4d15fc5
45c4b4d15fc5
45c4b4d15fc5
33512a8a338c
33512a8a338c
48d2337d76c2
e4270e6d9529
e4270e6d9529
e4270e6d9529
e4270e6d9529
64275d7d6618
64275d7d6618
64275d7d6618
45c4b4d15fc5
64275d7d6618
64275d7d6618
64275d7d6618
64275d7d6618
45c4b4d15fc5
64275d7d6618
64275d7d6618
64275d7d6618
64275d7d6618
45c4b4d15fc5
64275d7d6618
e4270e6d9529
91735168ee75
33512a8a338c
e4270e6d9529
33512a8a338c
e4270e6d9529
e4270e6d9529
33512a8a338c
e4270e6d9529
33512a8a338c
e4270e6d9529
e4270e6d9529
33512a8a338c
e4270e6d9529
33512a8a338c
33512a8a338c
e4270e6d9529
e4270e6d9529
33512a8a338c
48d2337d76c2
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
33512a8a338c
33512a8a338c
33512a8a338c
48d2337d76c2
48d2337d76c2
33512a8a338c
33512a8a338c
33512a8a338c
33512a8a338c
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
48d2337d76c2
33512a8a338c
33512a8a338c
33512a8a338c
48d2337d76c2
48d2337d76c2
33512a8a338c
#include "osc_control.h"
#include <stdlib.h>
#include <esp_event.h>
#include <esp_log.h>
#include <esp_wifi.h>
#include "display.h"
#include <esp_osc.h>
#include "ledstrip.h"
#include "squeeze.h"


static const char *TAG = "osc_control";

#define FLAMESPEWER_IP "192.168.1.25"

static esp_osc_client_t client;

// static void sender()
// {
//   // select targets
//   esp_osc_target_t targets[2] = {
//       esp_osc_target("127.0.0.1", 9000),
//   };

//   for(;;) {
//     // delay
//     vTaskDelay(1000 / portTICK_PERIOD_MS);

//     // send messages
//     for (size_t i = 0; i < 2; i++) {
//       esp_osc_send(&client, &targets[i], "test", "ihfdsb", 42, (int64_t)84, 3.14f, 6.28, "foo", 3, "bar");
//     }
//   }
// }

static uint8_t r_man = 0;
static uint8_t g_man = 0;
static uint8_t b_man = 0;


static bool callback(const char *topic, const char *format, esp_osc_value_t *values)
{
  // log message
  ESP_LOGI(TAG, "got message: %s (%s)", topic, format);


  char out[512] = {0};
  snprintf(out, 128, "topic: %s\nformat: %s\n", topic, format);

  for (size_t i = 0; i < strlen(format); i++) 
  {
    switch (format[i])
    {
      case 'i':
      {
        snprintf(out+strlen(out), 128-strlen(out), "Value: %ld", values[i].i);
        ESP_LOGI(TAG, "==> i: %ld", values[i].i);
        if(strcmp(topic, "/led_effect") == 0)
        {
          ledstrip_set_effect(values[i].i);
        }
      } break;

      case 'h':
      {
        ESP_LOGI(TAG, "==> h: %lld", values[i].h);
      }  break;

      case 'f':
      {
        if(values[i].f > 1.0)
          values[i].f = 1.0;
        if(values[i].f < 0.0)
          values[i].f = 0.0;

        snprintf(out+strlen(out), 128-strlen(out), "Value: %f", values[i].f);
        ESP_LOGI(TAG, "==> f: %f", values[i].f);

        if(strcmp(topic, "/led_modifier") == 0)
        {
          ledstrip_set_modifier(values[i].f);
        }
        else if(strcmp(topic, "/led_manual_r") == 0)
        {
          r_man = values[i].f * 255.0;
          ledstrip_set(g_man, r_man, b_man);
        }
        else if(strcmp(topic, "/led_manual_g") == 0)
        {
          g_man = values[i].f * 255.0;
          ledstrip_set(g_man, r_man, b_man);
        }
        else if(strcmp(topic, "/led_manual_b") == 0)
        {
          b_man = values[i].f * 255.0;
          ledstrip_set(g_man, r_man, b_man);
        }
      } break;

      case 'd':
      {
        ESP_LOGI(TAG, "==> d: %f", values[i].d);
      } break;

      case 's':
      {
        ESP_LOGI(TAG, "==> s: %s", values[i].s);
      }  break;

      case 'b':
      {
        ESP_LOGI(TAG, "==> b: %.*s (%d)", values[i].bl, values[i].b, values[i].bl);
        break;
      }

    }
    
  }

  display_update_text(out);

  return true;
}


#define FLAMESPEWER_IP "192.168.1.204"

static void osc_process() 
{

  for (;;) {
    // receive messages
    esp_osc_receive(&client, callback);
    // vTaskDelay(pdMS_TO_TICKS(100));
    vTaskDelay(pdMS_TO_TICKS(100));
  }
}


//#define pdTICKSTOMS( xTicks ) ( ( ( TickTypet ) ( xTicks ) * 1000u ) / configTICKRATE_HZ )

static void osc_send() 
{
  ESP_LOGI(TAG, "begin task osc_send");

  // // Really need this to wait for wifi connect
  esp_osc_target_t target = esp_osc_target("192.168.1.25", 5005);
    vTaskDelay(pdMS_TO_TICKS(2000));

  uint32_t last_tx = 0;

  for (;;) {


    if(squeeze_triggered())
    {
      ESP_LOGI(TAG, "trig that squeeze");

      esp_osc_send(&client, &target, "/squeeze_trig", "i", 1);
    }

    if(xTaskGetTickCount()*portTICK_PERIOD_MS - last_tx > 150)
    {
      last_tx = xTaskGetTickCount() * portTICK_PERIOD_MS;
      esp_osc_send(&client, &target, "/squeeze_value", "f", squeeze_value());
    }

    vTaskDelay(pdMS_TO_TICKS(10));
  }
}

void osc_init() {
  esp_osc_init(&client, 1024, 5005);

  xTaskCreatePinnedToCore(osc_process, "osc_process", 1024*8, NULL, 10, NULL, 1);
  xTaskCreatePinnedToCore(osc_send, "osc_send", 1024*4, NULL, 10, NULL, 1);
}