1 // Copyright 2018 The Fuchsia Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #pragma once
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
11 #define MENU_WAIT 3 // number of seconds
12 
13 typedef enum {
14     kInitMod,
15     kAppName,
16     kStart,
17     kReadParms,
18     kEditParms,
19     kShowParms,
20     kErrorLookup,
21     kInitNi,
22     kWaitNi,
23     kNiAddr,
24     kNetUp,
25     kNetDown,
26     kParseMonCmd,
27     kModCmdList,
28     kModName,
29     kFormat,
30     kFormatResetWc,
31     kUnformat,
32     kMount,
33     kSync,
34     kVolName,
35     kDevInserted,
36     kDevRemoved,
37     kCfUartDriver,
38     kDev,
39     kDisplayStats,
40     kResetStats,
41     kDnsSdAdded,
42     kDnsSdRemoved,
43     kmDnsResolved,
44     kmDnsQueryResolved,
45     kScrInit,
46     kInfo,
47 } SysModCmds;
48 
49 typedef void* (*Module)(int code, ...);
50 
51 extern Module ModuleList[];
52 
53 // Module List API
54 
55 void modInit(void);
56 void modAdd(Module module);
57 void modReadParms(void);
58 void modMenu(int menu_wait);
59 void modLoop(int req);
60 Module modFirst(void);
61 Module modNext(Module mod);
62 
63 // File Systems and Driver Modules
64 
65 void* FsModule(int req, ...);
66 void* NdmModule(int req, ...);
67 
68 #ifdef __cplusplus
69 }
70 #endif
71