378 lines
10 KiB
C++
378 lines
10 KiB
C++
// tasks
|
|
extern Task loop_msg_reel_task;
|
|
extern Task loop_msg_float_task;
|
|
extern Task loop_msg_gas_task;
|
|
extern Task loop_msg_drum_task;
|
|
|
|
// room protocol
|
|
static char msg_cstr[MSG_LENGTH_MAX] = {0, };
|
|
void gotChangedConnectionCallback() { // REQUIRED
|
|
}
|
|
void gotMessageCallback(uint32_t from, String & msg) { // REQUIRED
|
|
Serial.println(msg);
|
|
int message = msg.substring(1, 6).toInt();
|
|
|
|
// town_onoff
|
|
static unsigned long timestamp = millis(); // init timestamp!
|
|
static bool town_onoff = false;
|
|
//
|
|
if (message == SPEAK_A_HELLO || message == SPEAK_B_HELLO || message == SPEAK_C_HELLO || message == SPEAK_D_HELLO || message == SPEAK_E_HELLO || message == SPEAK_F_HELLO) {
|
|
//
|
|
timestamp = millis(); // update timestamp!
|
|
// Serial.println("town-folks alive!");
|
|
//
|
|
if (town_onoff == false) {
|
|
town_onoff = true;
|
|
loop_msg_reel_task.restartDelayed(100);
|
|
loop_msg_float_task.restartDelayed(100);
|
|
loop_msg_gas_task.restartDelayed(100);
|
|
loop_msg_drum_task.restartDelayed(100);
|
|
}
|
|
}
|
|
// if there's NO SPEAK_X_HELLO for 1 min. turn off objects.
|
|
if (millis() - timestamp > 1000*20) {
|
|
town_onoff = false;
|
|
loop_msg_reel_task.disable();
|
|
loop_msg_float_task.disable();
|
|
loop_msg_gas_task.disable();
|
|
loop_msg_drum_task.disable();
|
|
//
|
|
// Serial.println("town-folks sleep!");
|
|
}
|
|
}
|
|
|
|
//msg_reel task
|
|
void loop_msg_reel() {
|
|
//
|
|
static String msg = "";
|
|
sprintf(msg_cstr, "[%05d]", REEL_TURN);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.println("TX : " + msg);
|
|
//
|
|
loop_msg_reel_task.restartDelayed(random(1000*60*1.5, 1000*60*2));
|
|
}
|
|
Task loop_msg_reel_task(0, TASK_ONCE, &loop_msg_reel);
|
|
|
|
//msg_float task
|
|
void loop_msg_float() {
|
|
//
|
|
static String msg = "";
|
|
sprintf(msg_cstr, "[%05d]", FLOAT_FLY);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.println("TX : " + msg);
|
|
//
|
|
loop_msg_float_task.restartDelayed(random(1000*60*2, 1000*60*2.5));
|
|
}
|
|
Task loop_msg_float_task(0, TASK_ONCE, &loop_msg_float);
|
|
|
|
//msg_gas task
|
|
void loop_msg_gas() {
|
|
//
|
|
static String msg = "";
|
|
sprintf(msg_cstr, "[%05d]", GAS_RING_RING_RING);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.println("TX : " + msg);
|
|
//
|
|
loop_msg_gas_task.restartDelayed(random(800, 3000));
|
|
}
|
|
Task loop_msg_gas_task(0, TASK_ONCE, &loop_msg_gas);
|
|
|
|
//msg_drum task
|
|
void loop_msg_drum() {
|
|
//
|
|
static String msg = "";
|
|
sprintf(msg_cstr, "[%05d]", DRUM_SCRATCH);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.println("TX : " + msg);
|
|
//
|
|
loop_msg_drum_task.restartDelayed(random(800, 3000));
|
|
}
|
|
Task loop_msg_drum_task(0, TASK_ONCE, &loop_msg_drum);
|
|
|
|
// sound theme
|
|
#define N_THEMES 14
|
|
int theme = 0;
|
|
|
|
// vspeed
|
|
int vspeed = 0;
|
|
|
|
// soundset
|
|
int soundset = 0;
|
|
|
|
//speakers soundset changer
|
|
// // speakers mode changer
|
|
// // //speakers tic task
|
|
// // speakers speed changer
|
|
|
|
extern Task speaker_a_tick_task;
|
|
void speaker_a_tick() {
|
|
//
|
|
int base_speed = 1000 + (vspeed * 10);
|
|
int random_portion = base_speed * 0.1;
|
|
//
|
|
static String msg = "";
|
|
sprintf(msg_cstr, "[%05d]", SPEAK_A_TIC);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.println("TX : " + msg);
|
|
//
|
|
speaker_a_tick_task.restartDelayed(base_speed + random(random_portion));
|
|
}
|
|
Task speaker_a_tick_task(0, TASK_ONCE, &speaker_a_tick);
|
|
|
|
extern Task playloop_task;
|
|
void playloop() {
|
|
static String msg = "";
|
|
|
|
//
|
|
Serial.print("current THEME => ");
|
|
Serial.println(theme);
|
|
|
|
//
|
|
if (theme == 0) {
|
|
//
|
|
// directional propagation + soundset 01~10 + vspeed 20
|
|
//
|
|
sprintf(msg_cstr, "[%05d:%02d]", SPEAKERS_PLAYMODE, SPEAKERS_PLAYMODE_PROPA);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.println("TX : SPEAKERS_PLAYMODE == SPEAKERS_PLAYMODE_PROPA");
|
|
speaker_a_tick_task.restartDelayed(10);
|
|
//
|
|
soundset = 1; // soundset ==> 1 ~ 99
|
|
sprintf(msg_cstr, "[%05d:%02d]", SPEAKERS_PARA_SNDSET, soundset); // soundset ==> give starting sound #..
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SNDSET == ");
|
|
Serial.println(soundset);
|
|
Serial.println(msg);
|
|
//
|
|
vspeed = 0; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(30000);
|
|
//
|
|
} else if (theme == 1) {
|
|
//
|
|
vspeed = 75; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(30000);
|
|
//
|
|
} else if (theme == 2) {
|
|
//
|
|
vspeed = 0; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(40000);
|
|
//
|
|
} else if (theme == 3) {
|
|
//
|
|
vspeed = 500; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(30000);
|
|
//
|
|
} else if (theme == 4) {
|
|
//
|
|
// indep_random + soundset 01~10
|
|
//
|
|
sprintf(msg_cstr, "[%05d:%02d]", SPEAKERS_PLAYMODE, SPEAKERS_PLAYMODE_INDEP);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.println("TX : SPEAKERS_PLAYMODE == SPEAKERS_PLAYMODE_INDEP");
|
|
speaker_a_tick_task.disable();
|
|
//
|
|
vspeed = 0; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(30000);
|
|
//
|
|
} else if (theme == 5) {
|
|
//
|
|
vspeed = 150; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(30000);
|
|
//
|
|
} else if (theme == 6) {
|
|
//
|
|
vspeed = 200; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(10000);
|
|
//
|
|
} else if (theme == 7) {
|
|
//
|
|
vspeed = 0; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(40000);
|
|
//
|
|
} else if (theme == 8) {
|
|
//
|
|
// directional propagation + soundset 01~10 + vspeed 20
|
|
//
|
|
sprintf(msg_cstr, "[%05d:%02d]", SPEAKERS_PLAYMODE, SPEAKERS_PLAYMODE_PROPA);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.println("TX : SPEAKERS_PLAYMODE == SPEAKERS_PLAYMODE_PROPA");
|
|
speaker_a_tick_task.restartDelayed(10);
|
|
//
|
|
soundset = 11; // soundset ==> 1 ~ 99
|
|
sprintf(msg_cstr, "[%05d:%02d]", SPEAKERS_PARA_SNDSET, soundset); // soundset ==> give starting sound #..
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SNDSET == ");
|
|
Serial.println(soundset);
|
|
Serial.println(msg);
|
|
//
|
|
vspeed = 0; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(30000);
|
|
//
|
|
} else if (theme == 9) {
|
|
//
|
|
vspeed = 300; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(20000);
|
|
//
|
|
} else if (theme == 10) {
|
|
//
|
|
vspeed = 0; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(30000);
|
|
//
|
|
} else if (theme == 11) {
|
|
//
|
|
vspeed = 200; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(20000);
|
|
//
|
|
} else if (theme == 12) {
|
|
//
|
|
// indep_random + soundset 01~10
|
|
//
|
|
sprintf(msg_cstr, "[%05d:%02d]", SPEAKERS_PLAYMODE, SPEAKERS_PLAYMODE_INDEP);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.println("TX : SPEAKERS_PLAYMODE == SPEAKERS_PLAYMODE_INDEP");
|
|
speaker_a_tick_task.disable();
|
|
//
|
|
vspeed = 0; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(40000);
|
|
//
|
|
} else if (theme == 13) {
|
|
//
|
|
vspeed = 300; // vspeed ==> 0 ~ 999
|
|
sprintf(msg_cstr, "[%05d:%03d]", SPEAKERS_PARA_SPEED, vspeed);
|
|
msg = String(msg_cstr);
|
|
mesh.sendBroadcast(msg);
|
|
Serial.print("TX : SPEAKERS_PARA_SPEED == ");
|
|
Serial.println(vspeed);
|
|
Serial.println(msg);
|
|
//
|
|
playloop_task.restartDelayed(20000);
|
|
//
|
|
}
|
|
|
|
// theme : 0 ~ (N_THEMES - 1)
|
|
theme++;
|
|
if (theme >= N_THEMES) {
|
|
theme = 0;
|
|
}
|
|
}
|
|
Task playloop_task(0, TASK_ONCE, &playloop);
|
|
|
|
//
|
|
void setup_member() {
|
|
|
|
//
|
|
runner.addTask(loop_msg_reel_task);
|
|
runner.addTask(loop_msg_float_task);
|
|
runner.addTask(loop_msg_gas_task);
|
|
runner.addTask(loop_msg_drum_task);
|
|
|
|
//
|
|
runner.addTask(speaker_a_tick_task);
|
|
|
|
//
|
|
runner.addTask(playloop_task);
|
|
playloop_task.restartDelayed(100);
|
|
}
|