forked from microsoft/devicescript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdevicescript.h
More file actions
72 lines (56 loc) · 2.3 KB
/
devicescript.h
File metadata and controls
72 lines (56 loc) · 2.3 KB
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
67
68
69
70
71
72
#pragma once
#include "jd_protocol.h"
#include "jd_client.h"
#include "network/jd_network.h"
#include "jacdac/dist/c/devicescriptmanager.h"
#include "jacdac/dist/c/timeseriesaggregator.h"
#define DEVS_PANIC_REBOOT 60000
#define DEVS_PANIC_TIMEOUT 60001
#define DEVS_PANIC_INTERNAL_ERROR 60002 // not used
#define DEVS_PANIC_RUNTIME_FAILURE 60003 // not used
#define DEVS_PANIC_OOM 60004
#define DEVS_PANIC_UNHANDLED_EXCEPTION 60005
#define DEVS_PANIC_STACK_OVERFLOW 60006
typedef struct devs_ctx devs_ctx_t;
typedef struct {
uint8_t mgr_service_idx;
} devs_cfg_t;
int devs_verify(const uint8_t *img, uint32_t size);
void devs_dump_versions(const void *img);
devs_ctx_t *devs_create_ctx(const uint8_t *img, uint32_t size, const devs_cfg_t *cfg);
void devs_restart(devs_ctx_t *ctx);
unsigned devs_error_code(devs_ctx_t *ctx, unsigned *pc);
void devs_client_event_handler(devs_ctx_t *ctx, int event_id, void *arg0, void *arg1);
void devs_free_ctx(devs_ctx_t *ctx);
void devs_panic_handler(int exitcode);
void devs_deploy_handler(int exitcode);
#define DEVS_FLAG_GC_STRESS (1U << 0)
void devs_set_global_flags(uint32_t global_flags);
void devs_reset_global_flags(uint32_t global_flags);
uint32_t devs_get_global_flags(void);
void devs_gpio_init_dcfg(devs_ctx_t *ctx);
// General utils
char *devs_json_escape(const char *str, unsigned sz);
// DeviceScript manager service
void devsmgr_init(void);
// start all related services, including network and debugging
void devs_service_full_init(void);
devs_ctx_t *devsmgr_get_ctx(void);
int devsmgr_deploy(const void *img, unsigned imgsize);
int devsmgr_get_hash(uint8_t hash[JD_SHA256_HASH_BYTES]);
int devsmgr_deploy_start(uint32_t sz);
int devsmgr_deploy_write(const void *buf, unsigned size);
void devsmgr_restart(void);
void devsdbg_init(void);
void devsdbg_suspend_cb(devs_ctx_t *ctx);
typedef struct {
int (*send_message)(int data_type, const char *topic, const void *data, unsigned datasize);
int (*is_connected)(void);
size_t max_bin_upload_size;
int (*service_query)(jd_packet_t *pkt);
void (*track_exception)(devs_ctx_t *ctx);
} devscloud_api_t;
extern const devscloud_api_t noop_cloud;
extern const devscloud_api_t wssk_cloud;
void devscloud_on_message(int data_type, const void *data, unsigned datasize);
void devscloud_init(const devscloud_api_t *cloud_api);