capsules_core/
driver.rs

1// Licensed under the Apache License, Version 2.0 or the MIT License.
2// SPDX-License-Identifier: Apache-2.0 OR MIT
3// Copyright Tock Contributors 2022.
4
5//! Mapping of capsules to their syscall driver number.
6
7use enum_primitive::cast::FromPrimitive;
8use enum_primitive::enum_from_primitive;
9
10enum_from_primitive! {
11#[derive(Debug, PartialEq)]
12// syscall driver numbers
13pub enum NUM {
14    // Base
15    Alarm                 = 0x00000,
16    Console               = 0x00001,
17    Led                   = 0x00002,
18    Button                = 0x00003,
19    Gpio                  = 0x00004,
20    Adc                   = 0x00005,
21    Dac                   = 0x00006,
22    AnalogComparator      = 0x00007,
23    LowLevelDebug         = 0x00008,
24    ReadOnlyState         = 0x00009,
25    Pwm                   = 0x00010,
26
27    // Kernel
28    Ipc                   = 0x10000,
29
30    // HW Buses
31    Spi                   = 0x20001,
32    SpiPeripheral         = 0x20002,
33    I2cMaster             = 0x20003,
34    UsbUser               = 0x20005,
35    I2cMasterSlave        = 0x20006,
36    Can                   = 0x20007,
37
38    // Networking
39    BleAdvertising        = 0x30000,
40    Ieee802154            = 0x30001,
41    Udp                   = 0x30002,
42    LoRaPhySPI            = 0x30003,
43    LoRaPhyGPIO           = 0x30004,
44    Thread                = 0x30005,
45    Eui64                 = 0x30006,
46    EthernetTap           = 0x30007,
47
48    // Cryptography
49    Rng                   = 0x40001,
50    Crc                   = 0x40002,
51    Hmac                  = 0x40003,
52    CtapHid               = 0x40004,
53    Sha                   = 0x40005,
54    Aes                   = 0x40006,
55
56    // Storage
57    AppFlash              = 0x50000,
58    NvmStorage            = 0x50001,
59    SdCard                = 0x50002,
60    Kv                    = 0x50003,
61    IsolatedNvmStorage    = 0x50004,
62
63    // Sensors
64    Temperature           = 0x60000,
65    Humidity              = 0x60001,
66    AmbientLight          = 0x60002,
67    NINEDOF               = 0x60004,
68    Proximity             = 0x60005,
69    SoundPressure         = 0x60006,
70    AirQuality            = 0x60007,
71    Pressure              = 0x60008,
72    Distance              = 0x60009,
73    Moisture              = 0x6000A,
74    RainFall              = 0x6000B,
75
76    // Sensor ICs
77    Tsl2561               = 0x70000,
78    Tmp006                = 0x70001,
79    Lps25hb               = 0x70004,
80    L3gd20                = 0x70005,
81    Lsm303dlch            = 0x70006,
82    Mlx90614              = 0x70007,
83    Lsm6dsoxtr            = 0x70008,
84
85    // Other ICs
86    Ltc294x               = 0x80000,
87    Max17205              = 0x80001,
88    Pca9544a              = 0x80002,
89    GpioAsync             = 0x80003,
90    Nrf51822Serialization = 0x80004,
91
92    // Misc
93    Buzzer                = 0x90000,
94    Screen                = 0x90001,
95    Touch                 = 0x90002,
96    TextScreen            = 0x90003,
97    SevenSegment          = 0x90004,
98    KeyboardHid           = 0x90005,
99    DateTime              = 0x90007,
100    CycleCount            = 0x90008,
101    Servo                 = 0x90009,
102}
103}