Commit b0f14ba36b8b224dd849c33836e4a9f8f0bafd6b
1 parent
3337cc2a
Exists in
master
and in
5 other branches
Reimplementando modulo hllapi
Showing
4 changed files
with
62 additions
and
23 deletions
Show diff stats
src/plugins/remotectl/calls.c
| @@ -72,14 +72,14 @@ | @@ -72,14 +72,14 @@ | ||
| 72 | { (void **) &host_disconnect, (void *) hllapi_pipe_disconnect, "lib3270_disconnect" }, | 72 | { (void **) &host_disconnect, (void *) hllapi_pipe_disconnect, "lib3270_disconnect" }, |
| 73 | { (void **) &wait_for_ready, (void *) NULL, "lib3270_wait_for_ready" }, | 73 | { (void **) &wait_for_ready, (void *) NULL, "lib3270_wait_for_ready" }, |
| 74 | { (void **) &script_sleep, (void *) NULL, "lib3270_wait" }, | 74 | { (void **) &script_sleep, (void *) NULL, "lib3270_wait" }, |
| 75 | - { (void **) &get_message, (void *) NULL, "lib3270_get_program_message" }, | ||
| 76 | - { (void **) &get_text, (void *) NULL, "lib3270_get_text_at" }, | 75 | + { (void **) &get_message, (void *) hllapi_pipe_get_message, "lib3270_get_program_message" }, |
| 76 | + { (void **) &get_text, (void *) hllapi_pipe_get_text_at, "lib3270_get_text_at" }, | ||
| 77 | { (void **) &release_memory, (void *) hllapi_pipe_release_memory, "lib3270_free" }, | 77 | { (void **) &release_memory, (void *) hllapi_pipe_release_memory, "lib3270_free" }, |
| 78 | - { (void **) &action_enter, (void *) NULL, "lib3270_enter" }, | ||
| 79 | - { (void **) &set_text_at, (void *) NULL, "lib3270_set_string_at" }, | ||
| 80 | - { (void **) &cmp_text_at, (void *) NULL, "lib3270_cmp_text_at" }, | ||
| 81 | - { (void **) &pfkey, (void *) NULL, "lib3270_pfkey" }, | ||
| 82 | - { (void **) &pakey, (void *) NULL, "lib3270_pakey" }, | 78 | + { (void **) &action_enter, (void *) hllapi_pipe_enter, "lib3270_enter" }, |
| 79 | + { (void **) &set_text_at, (void *) hllapi_pipe_set_text_at, "lib3270_set_string_at" }, | ||
| 80 | + { (void **) &cmp_text_at, (void *) hllapi_pipe_cmp_text_at, "lib3270_cmp_text_at" }, | ||
| 81 | + { (void **) &pfkey, (void *) hllapi_pipe_pfkey, "lib3270_pfkey" }, | ||
| 82 | + { (void **) &pakey, (void *) hllapi_pipe_pakey, "lib3270_pakey" }, | ||
| 83 | 83 | ||
| 84 | { NULL, NULL } | 84 | { NULL, NULL } |
| 85 | }; | 85 | }; |
src/plugins/remotectl/client.h
| @@ -44,15 +44,15 @@ | @@ -44,15 +44,15 @@ | ||
| 44 | void hllapi_pipe_release_memory(void *p); | 44 | void hllapi_pipe_release_memory(void *p); |
| 45 | int hllapi_pipe_connect(void *h, const char *n, int wait); | 45 | int hllapi_pipe_connect(void *h, const char *n, int wait); |
| 46 | void hllapi_pipe_disconnect(void *h); | 46 | void hllapi_pipe_disconnect(void *h); |
| 47 | - | ||
| 48 | -/* | ||
| 49 | - int hllapi_pipe_wait_for_ready(void *h, int seconds); | ||
| 50 | - int hllapi_pipe_sleep(void *h, int seconds); | ||
| 51 | LIB3270_MESSAGE hllapi_pipe_get_message(void *h); | 47 | LIB3270_MESSAGE hllapi_pipe_get_message(void *h); |
| 52 | - char * hllapi_pipe_get_text(void *h, int row, int col, int len); | 48 | + char * hllapi_pipe_get_text_at(void *h, int row, int col, int len); |
| 53 | int hllapi_pipe_enter(void *h); | 49 | int hllapi_pipe_enter(void *h); |
| 54 | int hllapi_pipe_set_text_at(void *h, int row, int col, const unsigned char *str); | 50 | int hllapi_pipe_set_text_at(void *h, int row, int col, const unsigned char *str); |
| 55 | int hllapi_pipe_cmp_text_at(void *h, int row, int col, const char *text); | 51 | int hllapi_pipe_cmp_text_at(void *h, int row, int col, const char *text); |
| 56 | int hllapi_pipe_pfkey(void *h, int key); | 52 | int hllapi_pipe_pfkey(void *h, int key); |
| 57 | int hllapi_pipe_pakey(void *h, int key); | 53 | int hllapi_pipe_pakey(void *h, int key); |
| 54 | + | ||
| 55 | +/* | ||
| 56 | + int hllapi_pipe_wait_for_ready(void *h, int seconds); | ||
| 57 | + int hllapi_pipe_sleep(void *h, int seconds); | ||
| 58 | */ | 58 | */ |
src/plugins/remotectl/packets.h
| @@ -31,48 +31,65 @@ | @@ -31,48 +31,65 @@ | ||
| 31 | 31 | ||
| 32 | struct hllapi_packet_result | 32 | struct hllapi_packet_result |
| 33 | { | 33 | { |
| 34 | - int rc; | 34 | + int rc; |
| 35 | }; | 35 | }; |
| 36 | 36 | ||
| 37 | struct hllapi_packet_query | 37 | struct hllapi_packet_query |
| 38 | { | 38 | { |
| 39 | - unsigned char packet_id; | 39 | + int packet_id; |
| 40 | }; | 40 | }; |
| 41 | 41 | ||
| 42 | struct hllapi_packet_connect | 42 | struct hllapi_packet_connect |
| 43 | { | 43 | { |
| 44 | - unsigned char packet_id; | 44 | + int packet_id; |
| 45 | unsigned char wait; | 45 | unsigned char wait; |
| 46 | char hostname[1]; | 46 | char hostname[1]; |
| 47 | }; | 47 | }; |
| 48 | 48 | ||
| 49 | struct hllapi_packet_keycode | 49 | struct hllapi_packet_keycode |
| 50 | { | 50 | { |
| 51 | - unsigned char packet_id; | 51 | + int packet_id; |
| 52 | unsigned short keycode; | 52 | unsigned short keycode; |
| 53 | }; | 53 | }; |
| 54 | 54 | ||
| 55 | struct hllapi_packet_cursor | 55 | struct hllapi_packet_cursor |
| 56 | { | 56 | { |
| 57 | - unsigned char packet_id; | 57 | + int packet_id; |
| 58 | unsigned short row; | 58 | unsigned short row; |
| 59 | unsigned short col; | 59 | unsigned short col; |
| 60 | }; | 60 | }; |
| 61 | 61 | ||
| 62 | struct hllapi_packet_text | 62 | struct hllapi_packet_text |
| 63 | { | 63 | { |
| 64 | - unsigned char packet_id; | 64 | + int packet_id; |
| 65 | char text[1]; | 65 | char text[1]; |
| 66 | }; | 66 | }; |
| 67 | 67 | ||
| 68 | +struct hllapi_packet_at | ||
| 69 | +{ | ||
| 70 | + int packet_id; | ||
| 71 | + unsigned short row; | ||
| 72 | + unsigned short col; | ||
| 73 | + unsigned short len; | ||
| 74 | +}; | ||
| 68 | 75 | ||
| 69 | struct hllapi_packet_text_at | 76 | struct hllapi_packet_text_at |
| 70 | { | 77 | { |
| 71 | - unsigned char packet_id; | 78 | + int packet_id; |
| 72 | unsigned short row; | 79 | unsigned short row; |
| 73 | unsigned short col; | 80 | unsigned short col; |
| 74 | char text[1]; | 81 | char text[1]; |
| 75 | }; | 82 | }; |
| 76 | 83 | ||
| 84 | +struct hllapi_packet_query_at | ||
| 85 | +{ | ||
| 86 | + int packet_id; | ||
| 87 | + unsigned short row; | ||
| 88 | + unsigned short col; | ||
| 89 | + unsigned short len; | ||
| 90 | +}; | ||
| 91 | + | ||
| 92 | + | ||
| 93 | + | ||
| 77 | #pragma pack() | 94 | #pragma pack() |
| 78 | 95 |
src/plugins/remotectl/pluginmain.c
| @@ -134,13 +134,28 @@ | @@ -134,13 +134,28 @@ | ||
| 134 | return FALSE; | 134 | return FALSE; |
| 135 | } | 135 | } |
| 136 | 136 | ||
| 137 | -/* | ||
| 138 | - static void send_message(pipe_source *source, const void *pkt, int sz) | 137 | + static void send_text(pipe_source *source, char *text) |
| 139 | { | 138 | { |
| 140 | - WriteFile(qry->hPipe,&data,wrote,&wrote,NULL); | 139 | + struct hllapi_packet_text *pkt; |
| 140 | + DWORD szBlock; | ||
| 141 | 141 | ||
| 142 | + if(text) | ||
| 143 | + { | ||
| 144 | + szBlock = sizeof(struct hllapi_packet_text)+strlen(text); | ||
| 145 | + pkt = g_malloc0(szBlock); | ||
| 146 | + pkt->packet_id = 0; | ||
| 147 | + strcpy(pkt->text,text); | ||
| 148 | + lib3270_free(text); | ||
| 149 | + } | ||
| 150 | + else | ||
| 151 | + { | ||
| 152 | + szBlock = sizeof(struct hllapi_packet_text); | ||
| 153 | + pkt = g_malloc0(szBlock); | ||
| 154 | + pkt->packet_id = errno ? errno : -1; | ||
| 155 | + } | ||
| 156 | + | ||
| 157 | + WriteFile(source->hPipe,&pkt,szBlock,&szBlock,NULL); | ||
| 142 | } | 158 | } |
| 143 | -*/ | ||
| 144 | 159 | ||
| 145 | static void send_result(pipe_source *source, int rc) | 160 | static void send_result(pipe_source *source, int rc) |
| 146 | { | 161 | { |
| @@ -197,6 +212,13 @@ | @@ -197,6 +212,13 @@ | ||
| 197 | (unsigned char *) ((struct hllapi_packet_text_at *) source->buffer)->text)); | 212 | (unsigned char *) ((struct hllapi_packet_text_at *) source->buffer)->text)); |
| 198 | break; | 213 | break; |
| 199 | 214 | ||
| 215 | + case HLLAPI_PACKET_GET_TEXT_AT: | ||
| 216 | + send_text(source,lib3270_get_text_at( lib3270_get_default_session_handle(), | ||
| 217 | + ((struct hllapi_packet_at *) source->buffer)->row, | ||
| 218 | + ((struct hllapi_packet_at *) source->buffer)->col, | ||
| 219 | + ((struct hllapi_packet_at *) source->buffer)->len)); | ||
| 220 | + break; | ||
| 221 | + | ||
| 200 | case HLLAPI_PACKET_CMP_TEXT_AT: | 222 | case HLLAPI_PACKET_CMP_TEXT_AT: |
| 201 | send_result(source,lib3270_cmp_text_at( lib3270_get_default_session_handle(), | 223 | send_result(source,lib3270_cmp_text_at( lib3270_get_default_session_handle(), |
| 202 | ((struct hllapi_packet_text_at *) source->buffer)->row, | 224 | ((struct hllapi_packet_text_at *) source->buffer)->row, |