diff options
author | XANTRONIX Development | 2022-03-17 20:43:35 -0400 |
---|---|---|
committer | XANTRONIX Development | 2022-03-17 20:43:35 -0400 |
commit | 8ce8ec1c8c2531c7b78b2bf36241fa2e7b5c1da0 (patch) | |
tree | 6a0eca04e6482143638b6e52f4f596f807168ed4 | |
parent | 36c3f7e4a45cd7d6c1799ae7abba9a8dc2ae4dee (diff) | |
download | xas-8ce8ec1c8c2531c7b78b2bf36241fa2e7b5c1da0.tar.gz xas-8ce8ec1c8c2531c7b78b2bf36241fa2e7b5c1da0.tar.bz2 xas-8ce8ec1c8c2531c7b78b2bf36241fa2e7b5c1da0.zip |
Implement xas_drone_seq_beep()
Implement xas_drone_seq_beep() to schedule a one-second beep from a
single drone
-rw-r--r-- | include/xas/drone.h | 5 | ||||
-rw-r--r-- | src/drone.c | 40 |
2 files changed, 45 insertions, 0 deletions
diff --git a/include/xas/drone.h b/include/xas/drone.h index 28929fd..df16040 100644 --- a/include/xas/drone.h +++ b/include/xas/drone.h @@ -116,6 +116,11 @@ int xas_drone_seq_sample(xas_drone *drone, size_t sample_index, struct timeval *now); +int xas_drone_seq_beep(xas_drone *drone, + xas_seq *seq, + enum xas_drone_mood mood, + struct timeval *now); + /* * Methods for drone vocalisations */ diff --git a/src/drone.c b/src/drone.c index b00e492..4fa9ddb 100644 --- a/src/drone.c +++ b/src/drone.c @@ -357,6 +357,46 @@ error_xas_seq_add: return -1; } +int xas_drone_seq_beep(xas_drone *drone, + xas_seq *seq, + enum xas_drone_mood mood, + struct timeval *now) { + static struct timeval duration = { 1, 0 }, + tmp; + + if (xas_seq_add_set_type(seq, + &drone->obj, + *now, + XAS_DRONE_INDEX_BEEP, + mood) < 0) { + goto error_seq; + } + + if (xas_seq_add_event_on(seq, + &drone->obj, + *now, + XAS_DRONE_INDEX_BEEP) < 0) { + goto error_seq; + } + + timeradd(now, &duration, &tmp); + + now->tv_sec = tmp.tv_sec; + now->tv_usec = tmp.tv_usec; + + if (xas_seq_add_event_off(seq, + &drone->obj, + *now, + XAS_DRONE_INDEX_BEEP) < 0) { + goto error_seq; + } + + return 0; + +error_seq: + return -1; +} + int xas_drone_vox_set_voice(xas_drone *drone, const char *voice) { return xas_vox_set_voice(drone->vox, voice); } |