Skip to content

Commit 1de9841

Browse files
committed
ywf: buzzer
1 parent 1a54b07 commit 1de9841

7 files changed

Lines changed: 134 additions & 106 deletions

File tree

examples/music/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ int melody[] = {
3333
#define TEMPO 114
3434

3535
int main(void) {
36-
if (!libtock_buzzer_exists()) {
36+
if (!libtocksync_buzzer_exists()) {
3737
printf("There is no available buzzer\n");
3838
return -1;
3939
}

libtock-sync/interface/buzzer.c

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,20 @@
1+
#include <libtock/interface/buzzer.h>
12
#include <libtock/interface/syscalls/buzzer_syscalls.h>
23

34
#include "buzzer.h"
45

5-
struct data {
6-
bool fired;
7-
};
8-
9-
static struct data result = { .fired = false };
10-
11-
12-
static void buzzer_cb(void) {
13-
result.fired = true;
6+
bool libtocksync_buzzer_exists() {
7+
return libtock_buzzer_exists();
148
}
159

10+
1611
returncode_t libtocksync_buzzer_tone(uint32_t frequency_hz, uint32_t duration_ms) {
17-
int err;
18-
result.fired = false;
12+
returncode_t ret;
1913

20-
err = libtock_buzzer_tone(frequency_hz, duration_ms, buzzer_cb);
21-
if (err != RETURNCODE_SUCCESS) return err;
14+
ret = libtock_buzzer_command_tone(frequency_hz, duration_ms);
15+
if (ret != RETURNCODE_SUCCESS) return ret;
2216

2317
// Wait for the callback meaning the tone is finished.
24-
yield_for(&result.fired);
18+
libtocksync_buzzer_yield_wait_for();
2519
return RETURNCODE_SUCCESS;
2620
}

libtock-sync/interface/buzzer.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
#pragma once
22

3-
#include <libtock/interface/buzzer.h>
3+
#include <libtock/interface/buzzer_types.h>
4+
#include <libtock/interface/syscalls/buzzer_syscalls.h>
45
#include <libtock/tock.h>
56

7+
#include "syscalls/buzzer_syscalls.h"
8+
69
#ifdef __cplusplus
710
extern "C" {
811
#endif
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#include "buzzer_syscalls.h"
2+
3+
returncode_t libtocksync_buzzer_yield_wait_for(void) {
4+
yield_wait_for(DRIVER_NUM_BUZZER, 0);
5+
return RETURNCODE_SUCCESS;
6+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#pragma once
2+
3+
#include <libtock/interface/syscalls/buzzer_syscalls.h>
4+
#include <libtock/tock.h>
5+
6+
#ifdef __cplusplus
7+
extern "C" {
8+
#endif
9+
10+
// Wait for buzzer event to start.
11+
returncode_t libtocksync_buzzer_yield_wait_for(void);
12+
13+
#ifdef __cplusplus
14+
}
15+
#endif

libtock/interface/buzzer.h

Lines changed: 1 addition & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,12 @@
11
#pragma once
22

33
#include "../tock.h"
4+
#include "buzzer_types.h"
45

56
#ifdef __cplusplus
67
extern "C" {
78
#endif
89

9-
#define NOTE_B0 31
10-
#define NOTE_C1 33
11-
#define NOTE_CS1 35
12-
#define NOTE_D1 37
13-
#define NOTE_DS1 39
14-
#define NOTE_E1 41
15-
#define NOTE_F1 44
16-
#define NOTE_FS1 46
17-
#define NOTE_G1 49
18-
#define NOTE_GS1 52
19-
#define NOTE_A1 55
20-
#define NOTE_AS1 58
21-
#define NOTE_B1 62
22-
#define NOTE_C2 65
23-
#define NOTE_CS2 69
24-
#define NOTE_D2 73
25-
#define NOTE_DS2 78
26-
#define NOTE_E2 82
27-
#define NOTE_F2 87
28-
#define NOTE_FS2 93
29-
#define NOTE_G2 98
30-
#define NOTE_GS2 104
31-
#define NOTE_A2 110
32-
#define NOTE_AS2 117
33-
#define NOTE_B2 123
34-
#define NOTE_C3 131
35-
#define NOTE_CS3 139
36-
#define NOTE_D3 147
37-
#define NOTE_DS3 156
38-
#define NOTE_E3 165
39-
#define NOTE_F3 175
40-
#define NOTE_FS3 185
41-
#define NOTE_G3 196
42-
#define NOTE_GS3 208
43-
#define NOTE_A3 220
44-
#define NOTE_AS3 233
45-
#define NOTE_B3 247
46-
#define NOTE_C4 262
47-
#define NOTE_CS4 277
48-
#define NOTE_D4 294
49-
#define NOTE_DS4 311
50-
#define NOTE_E4 330
51-
#define NOTE_F4 349
52-
#define NOTE_FS4 370
53-
#define NOTE_G4 392
54-
#define NOTE_GS4 415
55-
#define NOTE_A4 440
56-
#define NOTE_AS4 466
57-
#define NOTE_B4 494
58-
#define NOTE_C5 523
59-
#define NOTE_CS5 554
60-
#define NOTE_D5 587
61-
#define NOTE_DS5 622
62-
#define NOTE_E5 659
63-
#define NOTE_F5 698
64-
#define NOTE_FS5 740
65-
#define NOTE_G5 784
66-
#define NOTE_GS5 831
67-
#define NOTE_A5 880
68-
#define NOTE_AS5 932
69-
#define NOTE_B5 988
70-
#define NOTE_C6 1047
71-
#define NOTE_CS6 1109
72-
#define NOTE_D6 1175
73-
#define NOTE_DS6 1245
74-
#define NOTE_E6 1319
75-
#define NOTE_F6 1397
76-
#define NOTE_FS6 1480
77-
#define NOTE_G6 1568
78-
#define NOTE_GS6 1661
79-
#define NOTE_A6 1760
80-
#define NOTE_AS6 1865
81-
#define NOTE_B6 1976
82-
#define NOTE_C7 2093
83-
#define NOTE_CS7 2217
84-
#define NOTE_D7 2349
85-
#define NOTE_DS7 2489
86-
#define NOTE_E7 2637
87-
#define NOTE_F7 2794
88-
#define NOTE_FS7 2960
89-
#define NOTE_G7 3136
90-
#define NOTE_GS7 3322
91-
#define NOTE_A7 3520
92-
#define NOTE_AS7 3729
93-
#define NOTE_B7 3951
94-
#define NOTE_C8 4186
95-
#define NOTE_CS8 4435
96-
#define NOTE_D8 4699
97-
#define NOTE_DS8 4978
98-
9910
// Function signature for buzzer done callbacks.
10011
typedef void (*libtock_buzzer_done_callback)(void);
10112

libtock/interface/buzzer_types.h

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
#pragma once
2+
3+
#ifdef __cplusplus
4+
extern "C" {
5+
#endif
6+
7+
#define NOTE_B0 31
8+
#define NOTE_C1 33
9+
#define NOTE_CS1 35
10+
#define NOTE_D1 37
11+
#define NOTE_DS1 39
12+
#define NOTE_E1 41
13+
#define NOTE_F1 44
14+
#define NOTE_FS1 46
15+
#define NOTE_G1 49
16+
#define NOTE_GS1 52
17+
#define NOTE_A1 55
18+
#define NOTE_AS1 58
19+
#define NOTE_B1 62
20+
#define NOTE_C2 65
21+
#define NOTE_CS2 69
22+
#define NOTE_D2 73
23+
#define NOTE_DS2 78
24+
#define NOTE_E2 82
25+
#define NOTE_F2 87
26+
#define NOTE_FS2 93
27+
#define NOTE_G2 98
28+
#define NOTE_GS2 104
29+
#define NOTE_A2 110
30+
#define NOTE_AS2 117
31+
#define NOTE_B2 123
32+
#define NOTE_C3 131
33+
#define NOTE_CS3 139
34+
#define NOTE_D3 147
35+
#define NOTE_DS3 156
36+
#define NOTE_E3 165
37+
#define NOTE_F3 175
38+
#define NOTE_FS3 185
39+
#define NOTE_G3 196
40+
#define NOTE_GS3 208
41+
#define NOTE_A3 220
42+
#define NOTE_AS3 233
43+
#define NOTE_B3 247
44+
#define NOTE_C4 262
45+
#define NOTE_CS4 277
46+
#define NOTE_D4 294
47+
#define NOTE_DS4 311
48+
#define NOTE_E4 330
49+
#define NOTE_F4 349
50+
#define NOTE_FS4 370
51+
#define NOTE_G4 392
52+
#define NOTE_GS4 415
53+
#define NOTE_A4 440
54+
#define NOTE_AS4 466
55+
#define NOTE_B4 494
56+
#define NOTE_C5 523
57+
#define NOTE_CS5 554
58+
#define NOTE_D5 587
59+
#define NOTE_DS5 622
60+
#define NOTE_E5 659
61+
#define NOTE_F5 698
62+
#define NOTE_FS5 740
63+
#define NOTE_G5 784
64+
#define NOTE_GS5 831
65+
#define NOTE_A5 880
66+
#define NOTE_AS5 932
67+
#define NOTE_B5 988
68+
#define NOTE_C6 1047
69+
#define NOTE_CS6 1109
70+
#define NOTE_D6 1175
71+
#define NOTE_DS6 1245
72+
#define NOTE_E6 1319
73+
#define NOTE_F6 1397
74+
#define NOTE_FS6 1480
75+
#define NOTE_G6 1568
76+
#define NOTE_GS6 1661
77+
#define NOTE_A6 1760
78+
#define NOTE_AS6 1865
79+
#define NOTE_B6 1976
80+
#define NOTE_C7 2093
81+
#define NOTE_CS7 2217
82+
#define NOTE_D7 2349
83+
#define NOTE_DS7 2489
84+
#define NOTE_E7 2637
85+
#define NOTE_F7 2794
86+
#define NOTE_FS7 2960
87+
#define NOTE_G7 3136
88+
#define NOTE_GS7 3322
89+
#define NOTE_A7 3520
90+
#define NOTE_AS7 3729
91+
#define NOTE_B7 3951
92+
#define NOTE_C8 4186
93+
#define NOTE_CS8 4435
94+
#define NOTE_D8 4699
95+
#define NOTE_DS8 4978
96+
97+
#ifdef __cplusplus
98+
}
99+
#endif

0 commit comments

Comments
 (0)