blob: fce8a104bd77b9cffe8456735a6fd5a1e12a8596 [file] [log] [blame]
Jukka Rissanenb5525a02020-04-01 12:42:12 +03001/*
2 * Copyright (c) 2020 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#define DLCI_CONTROL 0
Jukka Rissanen492088b2020-03-30 17:07:11 +03008
Erwan Gouriou66d4c642022-12-19 17:11:01 +01009#if defined(CONFIG_GSM_MUX)
Jukka Rissanenb5525a02020-04-01 12:42:12 +030010#define DLCI_AT CONFIG_GSM_MUX_DLCI_AT
11#define DLCI_PPP CONFIG_GSM_MUX_DLCI_PPP
Jukka Rissanen492088b2020-03-30 17:07:11 +030012#else
13#define DLCI_AT -1
14#define DLCI_PPP -1
15#endif
Jukka Rissanenb5525a02020-04-01 12:42:12 +030016
17struct gsm_mux;
18struct gsm_dlci;
19
Kumar Galaa1b77fd2020-05-27 11:26:57 -050020void gsm_mux_recv_buf(struct gsm_mux *mux, uint8_t *buf, int len);
21int gsm_mux_send(struct gsm_mux *mux, uint8_t dlci_address,
22 const uint8_t *buf, size_t size);
Tomasz Bursztykae18fcbb2020-04-30 20:33:38 +020023struct gsm_mux *gsm_mux_create(const struct device *uart);
Jukka Rissanend75c83c2020-04-08 11:19:06 +030024int gsm_mux_disconnect(struct gsm_mux *mux, k_timeout_t timeout);
Jukka Rissanenb5525a02020-04-01 12:42:12 +030025void gsm_mux_init(void);
26
27typedef void (*gsm_mux_dlci_created_cb_t)(struct gsm_dlci *dlci,
28 bool connected,
29 void *user_data);
30
31int gsm_dlci_create(struct gsm_mux *mux,
Tomasz Bursztykae18fcbb2020-04-30 20:33:38 +020032 const struct device *uart,
Jukka Rissanenb5525a02020-04-01 12:42:12 +030033 int dlci_address,
34 gsm_mux_dlci_created_cb_t dlci_created_cb,
35 void *user_data,
36 struct gsm_dlci **dlci);
Kumar Galaa1b77fd2020-05-27 11:26:57 -050037int gsm_dlci_send(struct gsm_dlci *dlci, const uint8_t *buf, size_t size);
Jukka Rissanenb5525a02020-04-01 12:42:12 +030038int gsm_dlci_id(struct gsm_dlci *dlci);
Benjamin Lindqvist54cb2bc2020-10-05 13:58:55 +020039void gsm_mux_detach(struct gsm_mux *mux);