1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//! AT Commands for u-blox cellular module family\
//! Following the [u-blox cellular modules AT commands manual](https://www.u-blox.com/sites/default/files/u-blox-CEL_ATCommands_%28UBX-13002752%29.pdf)

pub mod control;
pub mod device_data_security;
pub mod device_lock;
pub mod dns;
pub mod general;
pub mod gpio;
pub mod ip_transport_layer;
pub mod mobile_control;
pub mod network_service;
pub mod psn;
pub mod sms;
pub mod system_features;

use atat::atat_derive::{AtatCmd, AtatResp, AtatUrc};

#[derive(Clone, AtatResp)]
pub struct NoResponse;

#[derive(Clone, AtatCmd)]
#[at_cmd("", NoResponse)]
pub struct AT;

#[derive(Clone, AtatUrc)]
pub enum Urc {
    #[at_urc("+CGEV: NW DETACH")]
    NetworkDetach,
    #[at_urc("+CGEV: ME DETACH")]
    MobileStationDetach,
    #[at_urc("+CGEV: NW DEACT")]
    NetworkDeactivate,
    #[at_urc("+CGEV: ME DEACT")]
    MobileStationDeactivate,
    #[at_urc("+CGEV: NW PDN DEACT")]
    NetworkPDNDeactivate,
    #[at_urc("+CGEV: ME PDN DEACT")]
    MobileStationPDNDeactivate,

    #[at_urc("+UUSORD")]
    SocketDataAvailable(ip_transport_layer::urc::SocketDataAvailable),
    #[at_urc("+UUSORF")]
    SocketDataAvailableUDP(ip_transport_layer::urc::SocketDataAvailable),
    #[at_urc("+UUPSDA")]
    DataConnectionActivated(psn::urc::DataConnectionActivated),
    #[at_urc("+UUPSDD")]
    DataConnectionDeactivated(psn::urc::DataConnectionDeactivated),
    #[at_urc("+UUSOCL")]
    SocketClosed(ip_transport_layer::urc::SocketClosed),

    #[at_urc("+UMWI")]
    MessageWaitingIndication(sms::urc::MessageWaitingIndication),
    #[at_urc("+CREG")]
    NetworkRegistration(network_service::urc::NetworkRegistration),
    #[at_urc("+CGREG")]
    GPRSNetworkRegistration(psn::urc::GPRSNetworkRegistration),
    #[at_urc("+CEREG")]
    EPSNetworkRegistration(psn::urc::EPSNetworkRegistration),
    #[at_urc("+UREG")]
    ExtendedPSNetworkRegistration(psn::urc::ExtendedPSNetworkRegistration),
}

impl atat::AtatLen for crate::services::data::socket::SocketHandle {
    type Len = heapless::consts::U1;
}