FreeCalypso > hg > fc-tourmaline
annotate src/cs/services/buzm/buzm_api.c @ 302:d32ac4edb634
aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 05 Jun 2023 21:34:33 +0000 |
parents | 8dfdf88d632f |
children |
rev | line source |
---|---|
297
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * The implementation of our external API functions lives here. |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 */ |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 #include "buzm/buzm_api.h" |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include "buzm/buzm_env.h" |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include "buzm/buzm_messages_i.h" |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include "rv/rv_general.h" |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include "rvf/rvf_api.h" |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include "rvm/rvm_use_id_list.h" |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 #include "ffs/ffs_api.h" |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 T_RV_RET buzm_play_melody(const char *pathname, UINT8 volume, BOOL loop) |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 { |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 struct buzm_start_msg *msg; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 T_FFS_FD fd; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 if (!buzm_env) |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 return RV_NOT_READY; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 if (volume < BUZM_VOLUME_MIN || volume > BUZM_VOLUME_MAX) |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 return RV_INVALID_PARAMETER; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 fd = ffs_open(pathname, FFS_O_RDONLY); |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 if (fd <= 0) |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 return RV_INVALID_PARAMETER; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 if (rvf_get_buf(buzm_env->prim_id, sizeof(struct buzm_start_msg), |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 (T_RVF_BUFFER **)&msg) == RVF_RED) { |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 rvf_send_trace( |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 "rvf_get_buf() failed in buzm_play_melody()", 42, |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 NULL_PARAM, RV_TRACE_LEVEL_ERROR, BUZM_USE_ID); |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 ffs_close(fd); |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 return RV_MEMORY_ERR; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 } |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 msg->hdr.msg_id = BUZM_START_REQ; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 msg->hdr.src_addr_id = buzm_env->addr_id; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 msg->hdr.dest_addr_id = buzm_env->addr_id; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 msg->hdr.callback_func = NULL; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 msg->fd = fd; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 msg->volume = volume; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 msg->loop = loop; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 if (rvf_send_msg(buzm_env->addr_id, msg) != RV_OK) { |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 rvf_send_trace("buzm_play_melody(): Send failed!", 32, |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 NULL_PARAM, RV_TRACE_LEVEL_ERROR, BUZM_USE_ID); |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 rvf_free_buf(msg); |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 ffs_close(fd); |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 return RV_INTERNAL_ERR; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 } |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 return RV_OK; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 } |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 T_RV_RET buzm_stop_melody(void) |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 { |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 struct buzm_stop_msg *msg; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 if (!buzm_env) |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 return RV_NOT_READY; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 if (rvf_get_buf(buzm_env->prim_id, sizeof(struct buzm_stop_msg), |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 (T_RVF_BUFFER **)&msg) == RVF_RED) { |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 rvf_send_trace( |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 "rvf_get_buf() failed in buzm_stop_melody()", 42, |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 NULL_PARAM, RV_TRACE_LEVEL_ERROR, BUZM_USE_ID); |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 return RV_MEMORY_ERR; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 } |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 msg->hdr.msg_id = BUZM_STOP_REQ; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 msg->hdr.src_addr_id = buzm_env->addr_id; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 msg->hdr.dest_addr_id = buzm_env->addr_id; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 msg->hdr.callback_func = NULL; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 if (rvf_send_msg(buzm_env->addr_id, msg) != RV_OK) { |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 rvf_send_trace("buzm_stop_melody(): Send failed!", 32, |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 NULL_PARAM, RV_TRACE_LEVEL_ERROR, BUZM_USE_ID); |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 rvf_free_buf(msg); |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 return RV_INTERNAL_ERR; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 } |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 return RV_OK; |
8dfdf88d632f
BUZM SWE initial implementation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 } |