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    Wifi                  = 0x30008,
50
51    // Cryptography
52    Rng                   = 0x40001,
53    Crc                   = 0x40002,
54    Hmac                  = 0x40003,
55    CtapHid               = 0x40004,
56    Sha                   = 0x40005,
57    Aes                   = 0x40006,
58
59    // Storage
60    AppFlash              = 0x50000,
61    NvmStorage            = 0x50001,
62    SdCard                = 0x50002,
63    Kv                    = 0x50003,
64    IsolatedNvmStorage    = 0x50004,
65
66    // Sensors
67    Temperature           = 0x60000,
68    Humidity              = 0x60001,
69    AmbientLight          = 0x60002,
70    NINEDOF               = 0x60004,
71    Proximity             = 0x60005,
72    SoundPressure         = 0x60006,
73    AirQuality            = 0x60007,
74    Pressure              = 0x60008,
75    Distance              = 0x60009,
76    Moisture              = 0x6000A,
77    RainFall              = 0x6000B,
78
79    // Sensor ICs
80    Tsl2561               = 0x70000,
81    Tmp006                = 0x70001,
82    Lps25hb               = 0x70004,
83    L3gd20                = 0x70005,
84    Lsm303dlch            = 0x70006,
85    Mlx90614              = 0x70007,
86    Lsm6dsoxtr            = 0x70008,
87
88    // Other ICs
89    Ltc294x               = 0x80000,
90    Max17205              = 0x80001,
91    Pca9544a              = 0x80002,
92    GpioAsync             = 0x80003,
93    Nrf51822Serialization = 0x80004,
94
95    // Misc
96    Buzzer                = 0x90000,
97    Screen                = 0x90001,
98    Touch                 = 0x90002,
99    TextScreen            = 0x90003,
100    SevenSegment          = 0x90004,
101    KeyboardHid           = 0x90005,
102    DateTime              = 0x90007,
103    CycleCount            = 0x90008,
104    Servo                 = 0x90009,
105}
106}