Révision | 1653b845297c53b4728febb75e45d88aefe1dbb1 (tree) |
---|---|
l'heure | 2020-10-11 12:18:50 |
Auteur | Satoshi Yasuda <7m3tjz@jarl...> |
Commiter | Satoshi Yasuda |
modified: dmonitor.h
modified: dmonitor_cmd.c
modified: dmonitor_utils.c
modified: dstar_data.c
modified: dvap.c
modified: dvmega_utils.c
modified: from_node.c
modified: inet_read.c
modified: main.c
modified: rig_read.c
modified: send_msg.c
modified: send_node.c
@@ -293,5 +293,7 @@ int lcd_type; | ||
293 | 293 | int lcd; |
294 | 294 | time_t lcd_time_save; |
295 | 295 | |
296 | -/* mics */ | |
296 | +/* misc */ | |
297 | 297 | char voice_packet_save[15]; |
298 | +int hole_punchd_recvd; | |
299 | +time_t msg_send_set_time; |
@@ -27,6 +27,7 @@ int cmd_check (unsigned char cmd[]) | ||
27 | 27 | sprintf (msg_temp, "UNLINK FROM %8.8s", area_call); |
28 | 28 | memcpy (mycall2, "UNLK", 4); |
29 | 29 | send_msg_sw = TRUE; |
30 | + time (&msg_send_set_time); | |
30 | 31 | sig_term = TRUE; |
31 | 32 | lcd_write(); |
32 | 33 | return FALSE; |
@@ -36,6 +37,7 @@ int cmd_check (unsigned char cmd[]) | ||
36 | 37 | sprintf (msg_temp, "LINKED TO %8.8s ", area_call); |
37 | 38 | memcpy (mycall2, "DMON", 4); |
38 | 39 | send_msg_sw = TRUE; |
40 | + time (&msg_send_set_time); | |
39 | 41 | lcd_write (); |
40 | 42 | return FALSE; |
41 | 43 | } |
@@ -44,6 +46,7 @@ int cmd_check (unsigned char cmd[]) | ||
44 | 46 | memcpy (msg_temp, "EXIT FROM SCAN ", 20); |
45 | 47 | memcpy (mycall2, "DMON", 4); |
46 | 48 | send_msg_sw = TRUE; |
49 | + time (&msg_send_set_time); | |
47 | 50 | scan_stop_sw = TRUE; |
48 | 51 | lcd_write(); |
49 | 52 | return FALSE; |
@@ -53,6 +56,7 @@ int cmd_check (unsigned char cmd[]) | ||
53 | 56 | memcpy (msg_temp, "RASPI REBOOT ", 20); |
54 | 57 | memcpy (mycall2, "DMON", 4); |
55 | 58 | send_msg_sw = ON; |
59 | + time (&msg_send_set_time); | |
56 | 60 | reboot_sw = ON; |
57 | 61 | lcd_write (); |
58 | 62 | return FALSE; |
@@ -62,6 +66,7 @@ int cmd_check (unsigned char cmd[]) | ||
62 | 66 | memcpy (msg_temp, "RASPI SHUTDOWN ", 20); |
63 | 67 | memcpy (mycall2, "DMON", 4); |
64 | 68 | send_msg_sw = ON; |
69 | + time (&msg_send_set_time); | |
65 | 70 | shutdown_sw = ON; |
66 | 71 | lcd_write(); |
67 | 72 | return FALSE; |
@@ -597,6 +597,7 @@ void error_msg (char str[]) | ||
597 | 597 | sprintf (msg_temp, "NOT REGIST %8.8s ", &str[31]); |
598 | 598 | memcpy (mycall2, "NORG", 4); |
599 | 599 | send_msg_sw = TRUE; |
600 | + time (&msg_send_set_time); | |
600 | 601 | sig_term = TRUE; |
601 | 602 | not_clear_error_msg = TRUE; |
602 | 603 | lcd_write(); |
@@ -606,6 +607,7 @@ void error_msg (char str[]) | ||
606 | 607 | sprintf (msg_temp, "LINK TO %8.8s ", area_call); |
607 | 608 | memcpy (mycall2, "LINK", 4); |
608 | 609 | send_msg_sw = TRUE; |
610 | + time (&msg_send_set_time); | |
609 | 611 | lcd_write (); |
610 | 612 | } |
611 | 613 | } |
@@ -8,6 +8,7 @@ void inet_led_onoff(void); | ||
8 | 8 | void putFifo (int len, char str[]); |
9 | 9 | void header_store (char str[]); |
10 | 10 | unsigned short int crc_calc (unsigned char string[], int length); |
11 | +int rig_status_check(void); | |
11 | 12 | |
12 | 13 | void short_msg_wrt (void) |
13 | 14 | { |
@@ -189,6 +190,8 @@ void rig_alt_header_set (unsigned char alt_hdr[]) | ||
189 | 190 | int ret; |
190 | 191 | unsigned short int crc; |
191 | 192 | |
193 | + if (!rig_status_check()) return; | |
194 | + | |
192 | 195 | if (!scan_sw) syslog (LOG_NOTICE, "Alt header %8.8s from rig", &alt_hdr[27]); |
193 | 196 | else |
194 | 197 | { |
@@ -12,6 +12,7 @@ void dstar_data(unsigned char string[], int inet); | ||
12 | 12 | void short_msg_wrt (void); |
13 | 13 | void send_msg (unsigned char str[], unsigned char my2[]); |
14 | 14 | int cmd_check (unsigned char cmd[]); |
15 | +int rig_status_check(void); | |
15 | 16 | |
16 | 17 | struct termios save_attr; |
17 | 18 | char dvap_buff[1024]; |
@@ -589,6 +590,7 @@ void dvap_send_header (void) | ||
589 | 590 | |
590 | 591 | if (dvap_header[25] == 0x20) return; |
591 | 592 | if (!cmd_check (&dvap_header[25])) return; |
593 | + if (!rig_status_check()) return; | |
592 | 594 | if (!memcmp (&dvap_header[25], "CALIBRAT", 8)) |
593 | 595 | { |
594 | 596 | dvap_state = DVAP_CALIBRATION_CLEAR;; |
@@ -11,6 +11,7 @@ void dstar_data (unsigned char string[], int inet); | ||
11 | 11 | void rig_buff_reset (int length); |
12 | 12 | unsigned short int crc_calc (unsigned char string[], int length); |
13 | 13 | int cmd_check (unsigned char cmd[]); |
14 | +int rig_status_check(void); | |
14 | 15 | |
15 | 16 | int rig_status_check (void); |
16 | 17 | char lastframe1[3] = {0x55, 0x55, 0x55}; |
@@ -137,6 +138,7 @@ void dvmega_read (void) | ||
137 | 138 | else |
138 | 139 | fprintf (status_fd, "%8.8s from DVMEGA\n", &rig_buff[30]); |
139 | 140 | if (!cmd_check (&rig_buff[22])) break; |
141 | + if (!rig_status_check()) return; | |
140 | 142 | gw_on = FALSE; |
141 | 143 | if (!inet_send_buff_set()) break; |
142 | 144 | inet_send_buff[16] = 0x80; |
@@ -9,6 +9,7 @@ void short_msg_wrt (void); | ||
9 | 9 | void dstar_data (unsigned char string[], int inet); |
10 | 10 | unsigned short int crc_calc (char str[], int length); |
11 | 11 | int cmd_check (unsigned char cmd[]); |
12 | +int rig_status_check(void); | |
12 | 13 | |
13 | 14 | |
14 | 15 | char node_header_save[58]; |
@@ -49,6 +50,7 @@ void header_read_from_node(void) /* read from rig (DV packet) */ | ||
49 | 50 | fprintf (status_fd, "%8.8s from Rig\n", usb.node_hdr.MyCall); |
50 | 51 | } |
51 | 52 | if (!cmd_check (usb.node_hdr.YourCall)) return; |
53 | + if (!rig_status_check()) return; | |
52 | 54 | gw_on = FALSE; |
53 | 55 | if (!inet_send_buff_set()) return; |
54 | 56 | inet_send_buff[16] = 0x80; |
@@ -110,12 +110,14 @@ void inet_read (void) | ||
110 | 110 | memcpy (&buff[24], "REQ ", 4); |
111 | 111 | sendto(in_addr_sock, buff, 28, 0, |
112 | 112 | (struct sockaddr *)&in_addr, sizeof(in_addr)); |
113 | + hole_punchd_recvd = TRUE; | |
113 | 114 | #if 0 |
114 | 115 | if (!link_send_sw) |
115 | 116 | { |
116 | 117 | sprintf (msg_temp, "LINK TO %8.8s ", area_call); |
117 | 118 | memcpy (mycall2, "LINK", 4); |
118 | 119 | send_msg_sw = TRUE; |
120 | + time (&msg_send_set_time); | |
119 | 121 | link_send_sw = TRUE; |
120 | 122 | } |
121 | 123 | #endif |
@@ -311,6 +311,7 @@ int main(int argc, char *argv[]) | ||
311 | 311 | alt_header_pnt = 0; |
312 | 312 | reboot_sw = FALSE; |
313 | 313 | shutdown_sw = FALSE; |
314 | + hole_punchd_recvd = FALSE; | |
314 | 315 | |
315 | 316 | FD_SET (in_addr_sock, &fd_save); |
316 | 317 |
@@ -354,8 +355,9 @@ top: | ||
354 | 355 | } |
355 | 356 | if (FD_ISSET (rig_fd, &read_set)) |
356 | 357 | { |
357 | - if (rig_type == DVAP) dvap_read(); | |
358 | - if (rig_type == DVMEGA) dvmega_read(); | |
358 | + if (rig_type == ICOM) rig_read(); | |
359 | + else if (rig_type == DVAP) dvap_read(); | |
360 | + else if (rig_type == DVMEGA) dvmega_read(); | |
359 | 361 | } |
360 | 362 | } |
361 | 363 | jitter_putFifo(); |
@@ -370,6 +372,7 @@ top: | ||
370 | 372 | sprintf (msg_temp, "NOT LINKED %8.8s ", area_call); |
371 | 373 | memcpy (mycall2, "NOLK", 4); |
372 | 374 | send_msg_sw = TRUE; |
375 | + time (&msg_send_set_time); | |
373 | 376 | syslog (LOG_INFO, |
374 | 377 | "Not Connected to %8.8s", area_call); |
375 | 378 | error_msg ("ERROR接続できまません"); |
@@ -97,6 +97,7 @@ enum | ||
97 | 97 | DVMEGA_INIT_DONE, |
98 | 98 | NODE_INIT, |
99 | 99 | NODE_INIT_DONE, |
100 | + HOLE_PUNCH_WAIT, | |
100 | 101 | RIG_READ |
101 | 102 | } rig_state = RIG_CHECK; |
102 | 103 |
@@ -144,7 +145,7 @@ void rig(void) | ||
144 | 145 | case ICOM_INIT_DONE: |
145 | 146 | if (icom_init_recv()) |
146 | 147 | { |
147 | - rig_state = RIG_READ; | |
148 | + rig_state = HOLE_PUNCH_WAIT; | |
148 | 149 | syslog (LOG_INFO, "RIG(ID-xxPlus) init/re-init done"); |
149 | 150 | memset (inet_frame_id, 0x00, 2); |
150 | 151 | frameID = 0; |
@@ -185,7 +186,7 @@ void rig(void) | ||
185 | 186 | { |
186 | 187 | memset (inet_frame_id, 0x00, 2); |
187 | 188 | frameID = 0; |
188 | - rig_state = RIG_READ; | |
189 | + rig_state = HOLE_PUNCH_WAIT; | |
189 | 190 | } |
190 | 191 | else |
191 | 192 | { |
@@ -239,7 +240,7 @@ void rig(void) | ||
239 | 240 | case DVMEGA_INIT_DONE: |
240 | 241 | if (dvmega_init_recv()) |
241 | 242 | { |
242 | - rig_state = RIG_READ; | |
243 | + rig_state = HOLE_PUNCH_WAIT; | |
243 | 244 | syslog (LOG_INFO, "RIG(DVMEGA) init/re-init done"); |
244 | 245 | memset (inet_frame_id, 0x00, 2); |
245 | 246 | frameID = 0; |
@@ -260,7 +261,7 @@ void rig(void) | ||
260 | 261 | rig_not_connect_msg(); |
261 | 262 | not_clear_error_msg = TRUE; |
262 | 263 | sig_term = TRUE; |
263 | - rig_state = RIG_READ; | |
264 | + rig_state = HOLE_PUNCH_WAIT; | |
264 | 265 | } |
265 | 266 | } |
266 | 267 | break; |
@@ -270,7 +271,11 @@ void rig(void) | ||
270 | 271 | break; |
271 | 272 | |
272 | 273 | case NODE_INIT_DONE: |
273 | - rig_state = RIG_READ; | |
274 | + rig_state = HOLE_PUNCH_WAIT;; | |
275 | + break; | |
276 | + | |
277 | + case HOLE_PUNCH_WAIT: | |
278 | + if (hole_punchd_recvd) rig_state = RIG_READ; | |
274 | 279 | break; |
275 | 280 | |
276 | 281 | case RIG_READ: |
@@ -414,6 +419,7 @@ int rig_read (void) | ||
414 | 419 | fprintf (status_fd, "%8.8s from Rig\n", &rig_buff[29]); |
415 | 420 | } |
416 | 421 | if (!cmd_check (&rig_buff[21])) return FALSE; |
422 | + if (!rig_status_check()) return FALSE; | |
417 | 423 | gw_on = FALSE; |
418 | 424 | if (!inet_send_buff_set()) return TRUE; |
419 | 425 | inet_send_buff[16] = 0x80; |
@@ -35,7 +35,14 @@ void send_msg (unsigned char string[], unsigned char my2[]) | ||
35 | 35 | char hdr_buff[42]; |
36 | 36 | struct timeval temp_time; |
37 | 37 | int n; |
38 | + time_t ctime; | |
38 | 39 | |
40 | + time (&ctime); | |
41 | + if ((ctime - msg_send_set_time) >= 2) | |
42 | + { | |
43 | + send_msg_sw = FALSE; | |
44 | + return; | |
45 | + } | |
39 | 46 | status_msg[3][10] = 0x70 ^ 0x40; |
40 | 47 | status_msg[3][11] = 0x4f ^ string[0]; |
41 | 48 | status_msg[3][12] = 0x93 ^ string[1]; |
@@ -91,7 +91,7 @@ void node_write (unsigned char str[], int length) | ||
91 | 91 | } |
92 | 92 | else if (length == 17) |
93 | 93 | { |
94 | -syslog(LOG_DEBUG," %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x", str[4], str[5], str[6], str[13], str[14], str[15]); | |
94 | +//syslog(LOG_DEBUG," %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x", str[4], str[5], str[6], str[13], str[14], str[15]); | |
95 | 95 | if ((str[3] & 0x40) |
96 | 96 | || !memcmp (&str[13], &lastframe[3], 3) |
97 | 97 | || !memcmp (&str[4], &lastframe[3], 3)) node_last_send (&str[4]); |