/** * Sends a UTC TimeSync message to a specific destination * * @param dest - #BACNET_ADDRESS - the specific destination * @param bdate - #BACNET_DATE * @param btime - #BACNET_TIME */ void Send_TimeSyncUTC_Remote( BACNET_ADDRESS * dest, BACNET_DATE * bdate, BACNET_TIME * btime) { int len = 0; int pdu_len = 0; int bytes_sent = 0; BACNET_NPDU_DATA npdu_data; BACNET_ADDRESS my_address; if (!dcc_communication_enabled()) return; datalink_get_my_address(&my_address); /* encode the NPDU portion of the packet */ npdu_encode_npdu_data(&npdu_data, false, MESSAGE_PRIORITY_NORMAL); pdu_len = npdu_encode_pdu(&Handler_Transmit_Buffer[0], dest, &my_address, &npdu_data); /* encode the APDU portion of the packet */ len = timesync_utc_encode_apdu(&Handler_Transmit_Buffer[pdu_len], bdate, btime); pdu_len += len; bytes_sent = datalink_send_pdu(dest, &npdu_data, &Handler_Transmit_Buffer[0], pdu_len); #if PRINT_ENABLED if (bytes_sent <= 0) fprintf(stderr, "Failed to Send UTC-Time-Synchronization Request (%s)!\n", strerror(errno)); #endif }
void Send_TimeSyncUTC( BACNET_DATE * bdate, BACNET_TIME * btime) { int pdu_len = 0; BACNET_ADDRESS dest; int bytes_sent = 0; BACNET_NPDU_DATA npdu_data; if (!dcc_communication_enabled()) return; /* we could use unicast or broadcast */ datalink_get_broadcast_address(&dest); /* encode the NPDU portion of the packet */ npdu_encode_npdu_data(&npdu_data, false, MESSAGE_PRIORITY_NORMAL); pdu_len = npdu_encode_pdu(&Handler_Transmit_Buffer[0], &dest, NULL, &npdu_data); /* encode the APDU portion of the packet */ pdu_len = timesync_utc_encode_apdu(&Handler_Transmit_Buffer[0], bdate, btime); bytes_sent = datalink_send_pdu(&dest, &npdu_data, &Handler_Transmit_Buffer[0], pdu_len); #if PRINT_ENABLED if (bytes_sent <= 0) fprintf(stderr, "Failed to Send UTC-Time-Synchronization Request (%s)!\n", strerror(errno)); #endif }
void testTimeSyncData( Test * pTest, BACNET_DATE * my_date, BACNET_TIME * my_time) { uint8_t apdu[480] = { 0 }; int len = 0; int apdu_len = 0; BACNET_DATE test_date; BACNET_TIME test_time; len = timesync_encode_apdu(&apdu[0], my_date, my_time); ct_test(pTest, len != 0); apdu_len = len; len = timesync_decode_apdu(&apdu[0], apdu_len, &test_date, &test_time); ct_test(pTest, len != -1); ct_test(pTest, datetime_compare_time(my_time, &test_time) == 0); ct_test(pTest, datetime_compare_date(my_date, &test_date) == 0); len = timesync_utc_encode_apdu(&apdu[0], my_date, my_time); ct_test(pTest, len != 0); apdu_len = len; len = timesync_utc_decode_apdu(&apdu[0], apdu_len, &test_date, &test_time); ct_test(pTest, len != -1); ct_test(pTest, datetime_compare_time(my_time, &test_time) == 0); ct_test(pTest, datetime_compare_date(my_date, &test_date) == 0); }