1 | /* Copyright JS Foundation and other contributors, http://js.foundation |
2 | * |
3 | * Licensed under the Apache License, Version 2.0 (the "License"); |
4 | * you may not use this file except in compliance with the License. |
5 | * You may obtain a copy of the License at |
6 | * |
7 | * http://www.apache.org/licenses/LICENSE-2.0 |
8 | * |
9 | * Unless required by applicable law or agreed to in writing, software |
10 | * distributed under the License is distributed on an "AS IS" BASIS |
11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
12 | * See the License for the specific language governing permissions and |
13 | * limitations under the License. |
14 | */ |
15 | |
16 | #ifndef JERRYSCRIPT_DEBUGGER_TRANSPORT_H |
17 | #define JERRYSCRIPT_DEBUGGER_TRANSPORT_H |
18 | |
19 | #include <stdbool.h> |
20 | #include <stddef.h> |
21 | #include <stdint.h> |
22 | |
23 | #ifdef __cplusplus |
24 | extern "C" |
25 | { |
26 | #endif /* __cplusplus */ |
27 | |
28 | /** \addtogroup jerry-debugger-transport Jerry engine debugger interface - transport control |
29 | * @{ |
30 | */ |
31 | |
32 | /** |
33 | * Maximum number of bytes transmitted or received. |
34 | */ |
35 | #define JERRY_DEBUGGER_TRANSPORT_MAX_BUFFER_SIZE 128 |
36 | |
37 | /** |
38 | * Receive message context. |
39 | */ |
40 | typedef struct |
41 | { |
42 | uint8_t *buffer_p; /**< buffer for storing the received data */ |
43 | size_t received_length; /**< number of currently received bytes */ |
44 | uint8_t *message_p; /**< start of the received message */ |
45 | size_t message_length; /**< length of the received message */ |
46 | size_t message_total_length; /**< total length for datagram protocols, |
47 | * 0 for stream protocols */ |
48 | } jerry_debugger_transport_receive_context_t; |
49 | |
50 | /** |
51 | * Forward definition of jerry_debugger_transport_header_t. |
52 | */ |
53 | struct jerry_debugger_transport_interface_t; |
54 | |
55 | /** |
56 | * Close connection callback. |
57 | */ |
58 | typedef void (*jerry_debugger_transport_close_t) (struct jerry_debugger_transport_interface_t *); |
59 | |
60 | /** |
61 | * Send data callback. |
62 | */ |
63 | typedef bool (*jerry_debugger_transport_send_t) (struct jerry_debugger_transport_interface_t *, |
64 | uint8_t *message_p, size_t message_length); |
65 | |
66 | /** |
67 | * Receive data callback. |
68 | */ |
69 | typedef bool (*jerry_debugger_transport_receive_t) (struct jerry_debugger_transport_interface_t *, |
70 | jerry_debugger_transport_receive_context_t *context_p); |
71 | |
72 | /** |
73 | * Transport layer header. |
74 | */ |
75 | typedef struct jerry_debugger_transport_interface_t |
76 | { |
77 | /* The following fields must be filled before calling jerry_debugger_transport_add(). */ |
78 | jerry_debugger_transport_close_t close; /**< close connection callback */ |
79 | jerry_debugger_transport_send_t send; /**< send data callback */ |
80 | jerry_debugger_transport_receive_t receive; /**< receive data callback */ |
81 | |
82 | /* The following fields are filled by jerry_debugger_transport_add(). */ |
83 | struct jerry_debugger_transport_interface_t *next_p; /**< next transport layer */ |
84 | } ; |
85 | |
86 | void jerry_debugger_transport_add (jerry_debugger_transport_header_t *, |
87 | size_t , size_t max_send_message_size, |
88 | size_t , size_t max_receive_message_size); |
89 | void jerry_debugger_transport_start (void); |
90 | |
91 | bool jerry_debugger_transport_is_connected (void); |
92 | void jerry_debugger_transport_close (void); |
93 | |
94 | bool jerry_debugger_transport_send (const uint8_t *message_p, size_t message_length); |
95 | bool jerry_debugger_transport_receive (jerry_debugger_transport_receive_context_t *context_p); |
96 | void jerry_debugger_transport_receive_completed (jerry_debugger_transport_receive_context_t *context_p); |
97 | |
98 | void jerry_debugger_transport_sleep (void); |
99 | |
100 | /** |
101 | * @} |
102 | */ |
103 | |
104 | #ifdef __cplusplus |
105 | } |
106 | #endif /* __cplusplus */ |
107 | #endif /* !JERRYSCRIPT_DEBUGGER_TRANSPORT_H */ |
108 | |