Add ringer support to L1CTL interface and layer1
This commit is contained in:
parent
447ac935c5
commit
3138c02142
|
@ -56,6 +56,7 @@ enum {
|
|||
L1CTL_TRAFFIC_REQ,
|
||||
L1CTL_TRAFFIC_CONF,
|
||||
L1CTL_TRAFFIC_IND,
|
||||
L1CTL_RINGER_REQ,
|
||||
};
|
||||
|
||||
enum ccch_mode {
|
||||
|
@ -309,4 +310,8 @@ struct l1ctl_traffic_req {
|
|||
uint8_t data[TRAFFIC_DATA_LEN];
|
||||
} __attribute__((packed));
|
||||
|
||||
struct l1ctl_ringer_req {
|
||||
uint8_t volume;
|
||||
} __attribute__((packed));
|
||||
|
||||
#endif /* __L1CTL_PROTO_H__ */
|
||||
|
|
|
@ -74,4 +74,7 @@ int l1ctl_ph_prim_cb(struct osmo_prim_hdr *oph, void *ctx);
|
|||
/* Transmit L1CTL_NEIGH_PM_REQ */
|
||||
int l1ctl_tx_neigh_pm_req(struct osmocom_ms *ms, int num, uint16_t *arfcn);
|
||||
|
||||
/* Transmit L1CTL_RINGER_REQ */
|
||||
int l1ctl_tx_ringer_req(struct osmocom_ms *ms, uint8_t volume);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -934,6 +934,23 @@ static int rx_l1_neigh_pm_ind(struct osmocom_ms *ms, struct msgb *msg)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Transmit L1CTL_RINGER_REQ */
|
||||
int l1ctl_tx_ringer_req(struct osmocom_ms *ms, uint8_t volume)
|
||||
{
|
||||
struct msgb *msg;
|
||||
struct l1ctl_ringer_req *ring_req;
|
||||
|
||||
msg = osmo_l1_alloc(L1CTL_RINGER_REQ);
|
||||
if (!msg)
|
||||
return -1;
|
||||
|
||||
LOGP(DL1C, LOGL_INFO, "Tx RINGER Req (volume %u)\n", volume);
|
||||
ring_req = (struct l1ctl_ringer_req *) msgb_put(msg, sizeof(*ring_req));
|
||||
ring_req->volume = volume;
|
||||
|
||||
return osmo_send_l1(ms, msg);
|
||||
}
|
||||
|
||||
/* Receive incoming data from L1 using L1CTL format */
|
||||
int l1ctl_recv(struct osmocom_ms *ms, struct msgb *msg)
|
||||
{
|
||||
|
|
|
@ -102,6 +102,8 @@ int main(void)
|
|||
/* initialize SIM */
|
||||
calypso_sim_init();
|
||||
|
||||
buzzer_mode_pwt(1);
|
||||
|
||||
puts("Power up simcard:\n");
|
||||
memset(atr,0,sizeof(atr));
|
||||
atrLength = calypso_sim_powerup(atr);
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include <rf/trf6151.h>
|
||||
#include <calypso/sim.h>
|
||||
#include <calypso/dsp.h>
|
||||
#include <calypso/buzzer.h>
|
||||
|
||||
#include <l1ctl_proto.h>
|
||||
|
||||
|
@ -616,6 +617,17 @@ static void l1ctl_sim_req(struct msgb *msg)
|
|||
sim_apdu(len, data);
|
||||
}
|
||||
|
||||
static void l1ctl_ringer_req(struct msgb *msg)
|
||||
{
|
||||
struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
|
||||
struct l1ctl_ringer_req *ring_req =
|
||||
(struct l1ctl_ringer_req *) l1h->data;
|
||||
|
||||
printf("Ringtone Request: %u\n", ring_req->volume);
|
||||
buzzer_volume(ring_req->volume);
|
||||
buzzer_note(NOTE(NOTE_C, OCTAVE_4));
|
||||
}
|
||||
|
||||
static struct llist_head l23_rx_queue = LLIST_HEAD_INIT(l23_rx_queue);
|
||||
|
||||
/* callback from SERCOMM when L2 sends a message to L1 */
|
||||
|
@ -707,6 +719,9 @@ void l1a_l23_handler(void)
|
|||
case L1CTL_SIM_REQ:
|
||||
l1ctl_sim_req(msg);
|
||||
break;
|
||||
case L1CTL_RINGER_REQ:
|
||||
l1ctl_ringer_req(msg);
|
||||
break;
|
||||
}
|
||||
|
||||
exit_msgbfree:
|
||||
|
|
Loading…
Reference in New Issue