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    AppLoader             = 0x10001,
30    ProcessInfo           = 0x10002,
31
32    // HW Buses
33    Spi                   = 0x20001,
34    SpiPeripheral         = 0x20002,
35    I2cMaster             = 0x20003,
36    UsbUser               = 0x20005,
37    I2cMasterSlave        = 0x20006,
38    Can                   = 0x20007,
39
40    // Networking
41    BleAdvertising        = 0x30000,
42    Ieee802154            = 0x30001,
43    Udp                   = 0x30002,
44    LoRaPhySPI            = 0x30003,
45    LoRaPhyGPIO           = 0x30004,
46    Thread                = 0x30005,
47    Eui64                 = 0x30006,
48    EthernetTap           = 0x30007,
49
50    // Cryptography
51    Rng                   = 0x40001,
52    Crc                   = 0x40002,
53    Hmac                  = 0x40003,
54    CtapHid               = 0x40004,
55    Sha                   = 0x40005,
56    Aes                   = 0x40006,
57
58    // Storage
59    AppFlash              = 0x50000,
60    NvmStorage            = 0x50001,
61    SdCard                = 0x50002,
62    Kv                    = 0x50003,
63    IsolatedNvmStorage    = 0x50004,
64
65    // Sensors
66    Temperature           = 0x60000,
67    Humidity              = 0x60001,
68    AmbientLight          = 0x60002,
69    NINEDOF               = 0x60004,
70    Proximity             = 0x60005,
71    SoundPressure         = 0x60006,
72    AirQuality            = 0x60007,
73    Pressure              = 0x60008,
74    Distance              = 0x60009,
75    Moisture              = 0x6000A,
76    RainFall              = 0x6000B,
77
78    // Sensor ICs
79    Tsl2561               = 0x70000,
80    Tmp006                = 0x70001,
81    Lps25hb               = 0x70004,
82    L3gd20                = 0x70005,
83    Lsm303dlch            = 0x70006,
84    Mlx90614              = 0x70007,
85    Lsm6dsoxtr            = 0x70008,
86
87    // Other ICs
88    Ltc294x               = 0x80000,
89    Max17205              = 0x80001,
90    Pca9544a              = 0x80002,
91    GpioAsync             = 0x80003,
92    Nrf51822Serialization = 0x80004,
93
94    // Misc
95    Buzzer                = 0x90000,
96    Screen                = 0x90001,
97    Touch                 = 0x90002,
98    TextScreen            = 0x90003,
99    SevenSegment          = 0x90004,
100    KeyboardHid           = 0x90005,
101    DateTime              = 0x90007,
102    CycleCount            = 0x90008,
103    Servo                 = 0x90009,
104}
105}