• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 *header_p);
59 
60 /**
61  * Send data callback.
62  */
63 typedef bool (*jerry_debugger_transport_send_t) (struct jerry_debugger_transport_interface_t *header_p,
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 *header_p,
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 } jerry_debugger_transport_header_t;
85 
86 void jerry_debugger_transport_add (jerry_debugger_transport_header_t *header_p,
87                                    size_t send_message_header_size, size_t max_send_message_size,
88                                    size_t receive_message_header_size, 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