Ran indent script.
This commit is contained in:
@@ -61,12 +61,11 @@ static uint8_t RxBuffer[MAX_MPDU];
|
|||||||
static uint8_t TxBuffer[MAX_MPDU];
|
static uint8_t TxBuffer[MAX_MPDU];
|
||||||
|
|
||||||
/* statistics derived from monitoring the network for each node */
|
/* statistics derived from monitoring the network for each node */
|
||||||
struct mstp_statistics
|
struct mstp_statistics {
|
||||||
{
|
|
||||||
/* counts how many times the node passes the token */
|
/* counts how many times the node passes the token */
|
||||||
uint32_t token_count;
|
uint32_t token_count;
|
||||||
/* counts how many times the node gets a second token */
|
/* counts how many times the node gets a second token */
|
||||||
uint32_t token_retries;
|
uint32_t token_retries;
|
||||||
/* delay after poll for master */
|
/* delay after poll for master */
|
||||||
uint32_t tusage_timeout;
|
uint32_t tusage_timeout;
|
||||||
/* highest number MAC during poll for master */
|
/* highest number MAC during poll for master */
|
||||||
@@ -90,8 +89,8 @@ static uint32_t timeval_diff_ms(
|
|||||||
uint32_t ms = 0;
|
uint32_t ms = 0;
|
||||||
|
|
||||||
/* convert to milliseconds */
|
/* convert to milliseconds */
|
||||||
ms = (now->tv_sec-old->tv_sec)*1000+
|
ms = (now->tv_sec - old->tv_sec) * 1000 + (now->tv_usec -
|
||||||
(now->tv_usec-old->tv_usec)/1000;
|
old->tv_usec) / 1000;
|
||||||
|
|
||||||
return ms;
|
return ms;
|
||||||
}
|
}
|
||||||
@@ -100,7 +99,7 @@ static void packet_statistics(
|
|||||||
struct timeval *tv,
|
struct timeval *tv,
|
||||||
volatile struct mstp_port_struct_t *mstp_port)
|
volatile struct mstp_port_struct_t *mstp_port)
|
||||||
{
|
{
|
||||||
static struct timeval old_tv = {0};
|
static struct timeval old_tv = { 0 };
|
||||||
static uint8_t old_frame = 255;
|
static uint8_t old_frame = 255;
|
||||||
static uint8_t old_src = 255;
|
static uint8_t old_src = 255;
|
||||||
static uint8_t old_dst = 255;
|
static uint8_t old_dst = 255;
|
||||||
@@ -189,39 +188,38 @@ static void packet_statistics(
|
|||||||
old_tv.tv_usec = tv->tv_usec;
|
old_tv.tv_usec = tv->tv_usec;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void packet_statistics_save(void)
|
static void packet_statistics_save(
|
||||||
|
void)
|
||||||
{
|
{
|
||||||
unsigned i; /* loop counter */
|
unsigned i; /* loop counter */
|
||||||
|
|
||||||
fprintf(stdout, "\r\n");
|
fprintf(stdout, "\r\n");
|
||||||
/* separate with tabs (8) keep words under 8 characters */
|
/* separate with tabs (8) keep words under 8 characters */
|
||||||
fprintf(stdout,
|
fprintf(stdout,
|
||||||
"MAC\tMaxMstr\tTokens\tRetries\tTreply"
|
"MAC\tMaxMstr\tTokens\tRetries\tTreply"
|
||||||
"\tTusage\tTrpfm\tTder\tTpostpd");
|
"\tTusage\tTrpfm\tTder\tTpostpd");
|
||||||
fprintf(stdout, "\r\n");
|
fprintf(stdout, "\r\n");
|
||||||
for (i = 0; i < 256; i++) {
|
for (i = 0; i < 256; i++) {
|
||||||
/* check for masters or slaves */
|
/* check for masters or slaves */
|
||||||
if ((MSTP_Statistics[i].token_count) ||
|
if ((MSTP_Statistics[i].token_count) || (MSTP_Statistics[i].der_reply)) {
|
||||||
(MSTP_Statistics[i].der_reply)) {
|
|
||||||
fprintf(stdout, "%u\t%u", i,
|
fprintf(stdout, "%u\t%u", i,
|
||||||
(unsigned)MSTP_Statistics[i].max_master);
|
(unsigned) MSTP_Statistics[i].max_master);
|
||||||
fprintf(stdout,
|
fprintf(stdout, "\t%lu\t%lu\t%lu\t%lu",
|
||||||
"\t%lu\t%lu\t%lu\t%lu",
|
(long unsigned int) MSTP_Statistics[i].token_count,
|
||||||
(long unsigned int)MSTP_Statistics[i].token_count,
|
(long unsigned int) MSTP_Statistics[i].token_retries,
|
||||||
(long unsigned int)MSTP_Statistics[i].token_retries,
|
(long unsigned int) MSTP_Statistics[i].token_reply,
|
||||||
(long unsigned int)MSTP_Statistics[i].token_reply,
|
(long unsigned int) MSTP_Statistics[i].tusage_timeout);
|
||||||
(long unsigned int)MSTP_Statistics[i].tusage_timeout);
|
fprintf(stdout, "\t%lu\t%lu\t%lu",
|
||||||
fprintf(stdout,
|
(long unsigned int) MSTP_Statistics[i].pfm_reply,
|
||||||
"\t%lu\t%lu\t%lu",
|
(long unsigned int) MSTP_Statistics[i].der_reply,
|
||||||
(long unsigned int)MSTP_Statistics[i].pfm_reply,
|
(long unsigned int) MSTP_Statistics[i].reply_postponed);
|
||||||
(long unsigned int)MSTP_Statistics[i].der_reply,
|
|
||||||
(long unsigned int)MSTP_Statistics[i].reply_postponed);
|
|
||||||
fprintf(stdout, "\r\n");
|
fprintf(stdout, "\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void packet_statistics_clear(void)
|
static void packet_statistics_clear(
|
||||||
|
void)
|
||||||
{
|
{
|
||||||
unsigned i; /* loop counter */
|
unsigned i; /* loop counter */
|
||||||
|
|
||||||
@@ -247,7 +245,7 @@ static uint16_t Timer_Silence(
|
|||||||
delta_time = 0xFFFF;
|
delta_time = 0xFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (uint16_t)delta_time;
|
return (uint16_t) delta_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Timer_Silence_Reset(
|
static void Timer_Silence_Reset(
|
||||||
@@ -391,7 +389,8 @@ static void cleanup(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
static BOOL WINAPI CtrlCHandler(DWORD dwCtrlType)
|
static BOOL WINAPI CtrlCHandler(
|
||||||
|
DWORD dwCtrlType)
|
||||||
{
|
{
|
||||||
dwCtrlType = dwCtrlType;
|
dwCtrlType = dwCtrlType;
|
||||||
exit(0);
|
exit(0);
|
||||||
@@ -472,10 +471,8 @@ int main(
|
|||||||
RS485_Interface(), (long) RS485_Get_Baud_Rate());
|
RS485_Interface(), (long) RS485_Get_Baud_Rate());
|
||||||
atexit(cleanup);
|
atexit(cleanup);
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
SetConsoleMode(
|
SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), ENABLE_PROCESSED_INPUT);
|
||||||
GetStdHandle(STD_INPUT_HANDLE),
|
SetConsoleCtrlHandler((PHANDLER_ROUTINE) CtrlCHandler, TRUE);
|
||||||
ENABLE_PROCESSED_INPUT);
|
|
||||||
SetConsoleCtrlHandler( (PHANDLER_ROUTINE)CtrlCHandler, TRUE );
|
|
||||||
#else
|
#else
|
||||||
signal_init();
|
signal_init();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -175,7 +175,8 @@ int Analog_Input_Encode_Property_APDU(
|
|||||||
encode_application_enumerated(&apdu[0], OBJECT_ANALOG_INPUT);
|
encode_application_enumerated(&apdu[0], OBJECT_ANALOG_INPUT);
|
||||||
break;
|
break;
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
apdu_len = encode_application_real(&apdu[0],
|
apdu_len =
|
||||||
|
encode_application_real(&apdu[0],
|
||||||
Analog_Input_Present_Value(object_instance));
|
Analog_Input_Present_Value(object_instance));
|
||||||
break;
|
break;
|
||||||
case PROP_STATUS_FLAGS:
|
case PROP_STATUS_FLAGS:
|
||||||
|
|||||||
@@ -377,10 +377,8 @@ bool Analog_Value_Write_Property(
|
|||||||
/* Command priority 6 is reserved for use by Minimum On/Off
|
/* Command priority 6 is reserved for use by Minimum On/Off
|
||||||
algorithm and may not be used for other purposes in any
|
algorithm and may not be used for other purposes in any
|
||||||
object. */
|
object. */
|
||||||
if (Analog_Value_Present_Value_Set(
|
if (Analog_Value_Present_Value_Set(wp_data->object_instance,
|
||||||
wp_data->object_instance,
|
value.type.Real, wp_data->priority)) {
|
||||||
value.type.Real,
|
|
||||||
wp_data->priority)) {
|
|
||||||
status = true;
|
status = true;
|
||||||
} else if (wp_data->priority == 6) {
|
} else if (wp_data->priority == 6) {
|
||||||
/* Command priority 6 is reserved for use by Minimum On/Off
|
/* Command priority 6 is reserved for use by Minimum On/Off
|
||||||
|
|||||||
@@ -285,12 +285,12 @@ int Binary_Output_Encode_Property_APDU(
|
|||||||
object_index =
|
object_index =
|
||||||
Binary_Output_Instance_To_Index(object_instance);
|
Binary_Output_Instance_To_Index(object_instance);
|
||||||
if (array_index <= BACNET_MAX_PRIORITY) {
|
if (array_index <= BACNET_MAX_PRIORITY) {
|
||||||
if (Binary_Output_Level[object_index][array_index-1] ==
|
if (Binary_Output_Level[object_index][array_index - 1] ==
|
||||||
BINARY_NULL)
|
BINARY_NULL)
|
||||||
len = encode_application_null(&apdu[apdu_len]);
|
len = encode_application_null(&apdu[apdu_len]);
|
||||||
else {
|
else {
|
||||||
present_value =
|
present_value =
|
||||||
Binary_Output_Level[object_index][array_index-1];
|
Binary_Output_Level[object_index][array_index - 1];
|
||||||
len =
|
len =
|
||||||
encode_application_enumerated(&apdu[apdu_len],
|
encode_application_enumerated(&apdu[apdu_len],
|
||||||
present_value);
|
present_value);
|
||||||
|
|||||||
@@ -245,10 +245,10 @@ int main(
|
|||||||
if (Error_Detected)
|
if (Error_Detected)
|
||||||
break;
|
break;
|
||||||
/* wait until the device is bound, or timeout and quit */
|
/* wait until the device is bound, or timeout and quit */
|
||||||
if(!found){
|
if (!found) {
|
||||||
found =
|
found =
|
||||||
address_bind_request(Target_Device_Object_Instance, &max_apdu,
|
address_bind_request(Target_Device_Object_Instance, &max_apdu,
|
||||||
&Target_Address);
|
&Target_Address);
|
||||||
}
|
}
|
||||||
if (found) {
|
if (found) {
|
||||||
if (invoke_id == 0) {
|
if (invoke_id == 0) {
|
||||||
|
|||||||
@@ -321,7 +321,7 @@ int main(
|
|||||||
if (Error_Detected)
|
if (Error_Detected)
|
||||||
break;
|
break;
|
||||||
/* wait until the device is bound, or timeout and quit */
|
/* wait until the device is bound, or timeout and quit */
|
||||||
if(!found){
|
if (!found) {
|
||||||
found =
|
found =
|
||||||
address_bind_request(Target_Device_Object_Instance, &max_apdu,
|
address_bind_request(Target_Device_Object_Instance, &max_apdu,
|
||||||
&Target_Address);
|
&Target_Address);
|
||||||
|
|||||||
@@ -67,14 +67,17 @@ static void Init_Service_Handlers(
|
|||||||
handler_read_property);
|
handler_read_property);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(
|
||||||
|
int argc,
|
||||||
|
char *argv[])
|
||||||
|
{
|
||||||
char *value_string = NULL;
|
char *value_string = NULL;
|
||||||
bool status = false;
|
bool status = false;
|
||||||
BACNET_COV_DATA cov_data;
|
BACNET_COV_DATA cov_data;
|
||||||
BACNET_PROPERTY_VALUE value_list;
|
BACNET_PROPERTY_VALUE value_list;
|
||||||
uint8_t tag;
|
uint8_t tag;
|
||||||
|
|
||||||
if (argc < 7) {
|
if (argc < 7) {
|
||||||
/* note: priority 16 and 0 should produce the same end results... */
|
/* note: priority 16 and 0 should produce the same end results... */
|
||||||
printf("Usage: %s pid device-id object-type object-instance "
|
printf("Usage: %s pid device-id object-type object-instance "
|
||||||
"time property tag value [priority] [index]\r\n" "\r\n" "pid:\r\n"
|
"time property tag value [priority] [index]\r\n" "\r\n" "pid:\r\n"
|
||||||
|
|||||||
@@ -67,7 +67,8 @@ void MyAbortHandler(
|
|||||||
(void) src;
|
(void) src;
|
||||||
(void) invoke_id;
|
(void) invoke_id;
|
||||||
(void) server;
|
(void) server;
|
||||||
fprintf(stderr,"BACnet Abort: %s\r\n", bactext_abort_reason_name(abort_reason));
|
fprintf(stderr, "BACnet Abort: %s\r\n",
|
||||||
|
bactext_abort_reason_name(abort_reason));
|
||||||
Error_Detected = true;
|
Error_Detected = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,7 +80,8 @@ void MyRejectHandler(
|
|||||||
/* FIXME: verify src and invoke id */
|
/* FIXME: verify src and invoke id */
|
||||||
(void) src;
|
(void) src;
|
||||||
(void) invoke_id;
|
(void) invoke_id;
|
||||||
fprintf(stderr, "BACnet Reject: %s\r\n", bactext_reject_reason_name(reject_reason));
|
fprintf(stderr, "BACnet Reject: %s\r\n",
|
||||||
|
bactext_reject_reason_name(reject_reason));
|
||||||
Error_Detected = true;
|
Error_Detected = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,14 +113,16 @@ static void print_address_cache(
|
|||||||
unsigned max_apdu = 0;
|
unsigned max_apdu = 0;
|
||||||
|
|
||||||
/* printf("%-7s %-14s %-4s %-5s %-14s\n", "Device", "MAC", "APDU", "SNET", "SADR"); */
|
/* printf("%-7s %-14s %-4s %-5s %-14s\n", "Device", "MAC", "APDU", "SNET", "SADR"); */
|
||||||
printf(";%-7s %-17s %-5s %-17s %-4s\n", "Device", "MAC", "SNET", "SADR", "APDU");
|
printf(";%-7s %-17s %-5s %-17s %-4s\n", "Device", "MAC", "SNET", "SADR",
|
||||||
|
"APDU");
|
||||||
printf(";------- ----------------- ----- ----------------- ----\n");
|
printf(";------- ----------------- ----- ----------------- ----\n");
|
||||||
for (i = 0; i < MAX_ADDRESS_CACHE; i++) {
|
for (i = 0; i < MAX_ADDRESS_CACHE; i++) {
|
||||||
if (address_get_by_index(i, &device_id, &max_apdu, &address)) {
|
if (address_get_by_index(i, &device_id, &max_apdu, &address)) {
|
||||||
printf(" %-7u ", device_id);
|
printf(" %-7u ", device_id);
|
||||||
for (j = 0; j < MAX_MAC_LEN; j++) {
|
for (j = 0; j < MAX_MAC_LEN; j++) {
|
||||||
if (j < address.mac_len) {
|
if (j < address.mac_len) {
|
||||||
if(j > 0) printf(":");
|
if (j > 0)
|
||||||
|
printf(":");
|
||||||
printf("%02X", address.mac[j]);
|
printf("%02X", address.mac[j]);
|
||||||
} else {
|
} else {
|
||||||
printf(" ");
|
printf(" ");
|
||||||
@@ -128,20 +132,21 @@ static void print_address_cache(
|
|||||||
if (address.net) {
|
if (address.net) {
|
||||||
for (j = 0; j < MAX_MAC_LEN; j++) {
|
for (j = 0; j < MAX_MAC_LEN; j++) {
|
||||||
if (j < address.len) {
|
if (j < address.len) {
|
||||||
if(j > 0) printf(":");
|
if (j > 0)
|
||||||
|
printf(":");
|
||||||
printf("%02X", address.adr[j]);
|
printf("%02X", address.adr[j]);
|
||||||
} else {
|
} else {
|
||||||
printf(" ");
|
printf(" ");
|
||||||
}
|
}
|
||||||
/*printf(" "); */
|
/*printf(" "); */
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
printf("0 ");
|
printf("0 ");
|
||||||
for (j = 2; j < MAX_MAC_LEN; j++) {
|
for (j = 2; j < MAX_MAC_LEN; j++) {
|
||||||
printf (" ");
|
printf(" ");
|
||||||
}
|
}
|
||||||
printf("");
|
printf("");
|
||||||
}
|
}
|
||||||
printf("%-4hu ", max_apdu);
|
printf("%-4hu ", max_apdu);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -434,7 +434,7 @@ int main(int argc, char *argv[]) {
|
|||||||
if (Error_Detected)
|
if (Error_Detected)
|
||||||
break;
|
break;
|
||||||
/* wait until the device is bound, or timeout and quit */
|
/* wait until the device is bound, or timeout and quit */
|
||||||
if(!found){
|
if (!found) {
|
||||||
found =
|
found =
|
||||||
address_bind_request(Target_Device_Object_Instance, &max_apdu,
|
address_bind_request(Target_Device_Object_Instance, &max_apdu,
|
||||||
&Target_Address);
|
&Target_Address);
|
||||||
|
|||||||
@@ -63,16 +63,16 @@ extern "C" {
|
|||||||
BACNET_WRITE_PROPERTY_DATA * wp_data,
|
BACNET_WRITE_PROPERTY_DATA * wp_data,
|
||||||
BACNET_ERROR_CLASS * error_class,
|
BACNET_ERROR_CLASS * error_class,
|
||||||
BACNET_ERROR_CODE * error_code);
|
BACNET_ERROR_CODE * error_code);
|
||||||
|
|
||||||
bool Analog_Value_Present_Value_Set(
|
bool Analog_Value_Present_Value_Set(
|
||||||
uint32_t object_instance,
|
uint32_t object_instance,
|
||||||
float value,
|
float value,
|
||||||
uint8_t priority);
|
uint8_t priority);
|
||||||
float Analog_Value_Present_Value(
|
float Analog_Value_Present_Value(
|
||||||
uint32_t object_instance);
|
uint32_t object_instance);
|
||||||
|
|
||||||
void Analog_Value_Init(
|
void Analog_Value_Init(
|
||||||
void);
|
void);
|
||||||
|
|
||||||
#ifdef TEST
|
#ifdef TEST
|
||||||
#include "ctest.h"
|
#include "ctest.h"
|
||||||
|
|||||||
@@ -219,5 +219,4 @@ extern "C" {
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -27,22 +27,22 @@
|
|||||||
|
|
||||||
/* prescale select bits */
|
/* prescale select bits */
|
||||||
#if (F_CPU >> 1) < 1000000
|
#if (F_CPU >> 1) < 1000000
|
||||||
#define ADPS_8BIT (1)
|
#define ADPS_8BIT (1)
|
||||||
#define ADPS_10BIT (3)
|
#define ADPS_10BIT (3)
|
||||||
#elif (F_CPU >> 2) < 1000000
|
#elif (F_CPU >> 2) < 1000000
|
||||||
#define ADPS_8BIT (2)
|
#define ADPS_8BIT (2)
|
||||||
#define ADPS_10BIT (4)
|
#define ADPS_10BIT (4)
|
||||||
#elif (F_CPU >> 3) < 1000000
|
#elif (F_CPU >> 3) < 1000000
|
||||||
#define ADPS_8BIT (3)
|
#define ADPS_8BIT (3)
|
||||||
#define ADPS_10BIT (5)
|
#define ADPS_10BIT (5)
|
||||||
#elif (F_CPU >> 4) < 1000000
|
#elif (F_CPU >> 4) < 1000000
|
||||||
#define ADPS_8BIT (4)
|
#define ADPS_8BIT (4)
|
||||||
#define ADPS_10BIT (6)
|
#define ADPS_10BIT (6)
|
||||||
#elif (F_CPU >> 5) < 1000000
|
#elif (F_CPU >> 5) < 1000000
|
||||||
#define ADPS_8BIT (5)
|
#define ADPS_8BIT (5)
|
||||||
#define ADPS_10BIT (7)
|
#define ADPS_10BIT (7)
|
||||||
#else
|
#else
|
||||||
#error "ADC: F_CPU too large for accuracy."
|
#error "ADC: F_CPU too large for accuracy."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* we could have array of ADC results */
|
/* we could have array of ADC results */
|
||||||
@@ -55,37 +55,38 @@ ISR(ADC_vect)
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint8_t adc_result(
|
uint8_t adc_result(
|
||||||
uint8_t channel) /* 0..7 = ADC0..ADC7, respectively */
|
uint8_t channel)
|
||||||
{
|
{ /* 0..7 = ADC0..ADC7, respectively */
|
||||||
return Sample_Result;
|
return Sample_Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void adc_init(void)
|
void adc_init(
|
||||||
|
void)
|
||||||
{
|
{
|
||||||
/* set prescaler */
|
/* set prescaler */
|
||||||
ADCSRA |= ADPS_8BIT;
|
ADCSRA |= ADPS_8BIT;
|
||||||
/* Initial channel selection */
|
/* Initial channel selection */
|
||||||
/* ADLAR = Left Adjust Result
|
/* ADLAR = Left Adjust Result
|
||||||
REFSx = hardware setup: cap on AREF
|
REFSx = hardware setup: cap on AREF
|
||||||
*/
|
*/
|
||||||
ADMUX = 7 /* channel */ | (1 << ADLAR) | (0 << REFS1) | (1 << REFS0);
|
ADMUX = 7 /* channel */ | (1 << ADLAR) | (0 << REFS1) | (1 << REFS0);
|
||||||
/* ADEN = Enable
|
/* ADEN = Enable
|
||||||
ADSC = Start conversion
|
ADSC = Start conversion
|
||||||
ADIF = Interrupt Flag
|
ADIF = Interrupt Flag
|
||||||
ADIE = Interrupt Enable
|
ADIE = Interrupt Enable
|
||||||
ADATE = Auto Trigger Enable
|
ADATE = Auto Trigger Enable
|
||||||
*/
|
*/
|
||||||
ADCSRA |= (1 << ADEN) | (1 << ADIE) | (1 << ADIF) | (1 << ADATE);
|
ADCSRA |= (1 << ADEN) | (1 << ADIE) | (1 << ADIF) | (1 << ADATE);
|
||||||
/* trigger selection bits
|
/* trigger selection bits
|
||||||
0 0 0 Free Running mode
|
0 0 0 Free Running mode
|
||||||
0 0 1 Analog Comparator
|
0 0 1 Analog Comparator
|
||||||
0 1 0 External Interrupt Request 0
|
0 1 0 External Interrupt Request 0
|
||||||
0 1 1 Timer/Counter0 Compare Match
|
0 1 1 Timer/Counter0 Compare Match
|
||||||
1 0 0 Timer/Counter0 Overflow
|
1 0 0 Timer/Counter0 Overflow
|
||||||
1 0 1 Timer/Counter1 Compare Match B
|
1 0 1 Timer/Counter1 Compare Match B
|
||||||
1 1 0 Timer/Counter1 Overflow
|
1 1 0 Timer/Counter1 Overflow
|
||||||
1 1 1 Timer/Counter1 Capture Event
|
1 1 1 Timer/Counter1 Capture Event
|
||||||
*/
|
*/
|
||||||
ADCSRB |= (0 << ADTS2) | (0 << ADTS1) | (0 << ADTS0);
|
ADCSRB |= (0 << ADTS2) | (0 << ADTS1) | (0 << ADTS0);
|
||||||
/* start the conversions */
|
/* start the conversions */
|
||||||
ADCSRA |= (1 << ADSC);
|
ADCSRA |= (1 << ADSC);
|
||||||
|
|||||||
@@ -30,11 +30,12 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
uint8_t adc_result(uint8_t channel);
|
uint8_t adc_result(
|
||||||
void adc_init(void);
|
uint8_t channel);
|
||||||
|
void adc_init(
|
||||||
|
void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -29,9 +29,9 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#if defined(__GNUC__) && (__GNUC__ > 4) && (__GNUC_MINOR__ > 2)
|
#if defined(__GNUC__) && (__GNUC__ > 4) && (__GNUC_MINOR__ > 2)
|
||||||
#include <math.h> /* for NAN */
|
#include <math.h> /* for NAN */
|
||||||
#else
|
#else
|
||||||
#define NAN __builtin_nan("")
|
#define NAN __builtin_nan("")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "bacdef.h"
|
#include "bacdef.h"
|
||||||
@@ -209,7 +209,7 @@ int Analog_Value_Encode_Property_APDU(
|
|||||||
unsigned i = 0;
|
unsigned i = 0;
|
||||||
bool state = false;
|
bool state = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch (property) {
|
switch (property) {
|
||||||
case PROP_OBJECT_IDENTIFIER:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
apdu_len =
|
apdu_len =
|
||||||
@@ -346,10 +346,8 @@ bool Analog_Value_Write_Property(
|
|||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_REAL) {
|
if (value.tag == BACNET_APPLICATION_TAG_REAL) {
|
||||||
if (Analog_Value_Present_Value_Set(
|
if (Analog_Value_Present_Value_Set(wp_data->object_instance,
|
||||||
wp_data->object_instance,
|
value.type.Real, wp_data->priority)) {
|
||||||
value.type.Real,
|
|
||||||
wp_data->priority)) {
|
|
||||||
status = true;
|
status = true;
|
||||||
} else if (wp_data->priority == 6) {
|
} else if (wp_data->priority == 6) {
|
||||||
/* Command priority 6 is reserved for use by Minimum On/Off
|
/* Command priority 6 is reserved for use by Minimum On/Off
|
||||||
@@ -363,10 +361,8 @@ bool Analog_Value_Write_Property(
|
|||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
} else if (value.tag == BACNET_APPLICATION_TAG_NULL) {
|
} else if (value.tag == BACNET_APPLICATION_TAG_NULL) {
|
||||||
if (Analog_Value_Present_Value_Set(
|
if (Analog_Value_Present_Value_Set(wp_data->object_instance,
|
||||||
wp_data->object_instance,
|
NAN, wp_data->priority)) {
|
||||||
NAN,
|
|
||||||
wp_data->priority)) {
|
|
||||||
status = true;
|
status = true;
|
||||||
} else {
|
} else {
|
||||||
*error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ bool Binary_Input_Present_Value_Set(
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ static BACNET_BINARY_PV Present_Value(
|
|||||||
BACNET_BINARY_PV value = RELINQUISH_DEFAULT;
|
BACNET_BINARY_PV value = RELINQUISH_DEFAULT;
|
||||||
BACNET_BINARY_PV current_value = RELINQUISH_DEFAULT;
|
BACNET_BINARY_PV current_value = RELINQUISH_DEFAULT;
|
||||||
unsigned i = 0;
|
unsigned i = 0;
|
||||||
|
|
||||||
if (index < MAX_BINARY_OUTPUTS) {
|
if (index < MAX_BINARY_OUTPUTS) {
|
||||||
for (i = 0; i < BACNET_MAX_PRIORITY; i++) {
|
for (i = 0; i < BACNET_MAX_PRIORITY; i++) {
|
||||||
current_value = Binary_Output_Level[index][i];
|
current_value = Binary_Output_Level[index][i];
|
||||||
@@ -203,7 +203,7 @@ void Binary_Output_Level_Sync(
|
|||||||
unsigned int index)
|
unsigned int index)
|
||||||
{
|
{
|
||||||
BACNET_BINARY_PV pv;
|
BACNET_BINARY_PV pv;
|
||||||
|
|
||||||
if (index < MAX_BINARY_OUTPUTS) {
|
if (index < MAX_BINARY_OUTPUTS) {
|
||||||
if (Out_Of_Service[index]) {
|
if (Out_Of_Service[index]) {
|
||||||
return;
|
return;
|
||||||
@@ -351,7 +351,7 @@ int Binary_Output_Encode_Property_APDU(
|
|||||||
Binary_Output_Instance_To_Index(object_instance);
|
Binary_Output_Instance_To_Index(object_instance);
|
||||||
if (array_index <= BACNET_MAX_PRIORITY) {
|
if (array_index <= BACNET_MAX_PRIORITY) {
|
||||||
present_value =
|
present_value =
|
||||||
Binary_Output_Level[object_index][array_index-1];
|
Binary_Output_Level[object_index][array_index - 1];
|
||||||
if (present_value == BINARY_NULL) {
|
if (present_value == BINARY_NULL) {
|
||||||
len = encode_application_null(&apdu[apdu_len]);
|
len = encode_application_null(&apdu[apdu_len]);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -33,31 +33,30 @@ FUSES = {
|
|||||||
/* note: fuses are enabled by clearing the bit, so
|
/* note: fuses are enabled by clearing the bit, so
|
||||||
any fuses listed below are cleared fuses. */
|
any fuses listed below are cleared fuses. */
|
||||||
.low = (FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1),
|
.low = (FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1),
|
||||||
|
/* BOOTSZ configuration:
|
||||||
/* BOOTSZ configuration:
|
BOOTSZ1 BOOTSZ0 Boot Size
|
||||||
BOOTSZ1 BOOTSZ0 Boot Size
|
------- ------- ---------
|
||||||
------- ------- ---------
|
1 1 512
|
||||||
1 1 512
|
1 0 1024
|
||||||
1 0 1024
|
0 1 2048
|
||||||
0 1 2048
|
0 0 4096
|
||||||
0 0 4096
|
*/
|
||||||
*/
|
/* note: fuses are enabled by clearing the bit, so
|
||||||
/* note: fuses are enabled by clearing the bit, so
|
any fuses listed below are cleared fuses. */
|
||||||
any fuses listed below are cleared fuses. */
|
.high =
|
||||||
.high =
|
(FUSE_BOOTSZ1 & FUSE_BOOTRST & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN),
|
||||||
(FUSE_BOOTSZ1 & FUSE_BOOTRST & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN),
|
/* Brown-out detection VCC=2.7V */
|
||||||
/* Brown-out detection VCC=2.7V */
|
/* BODLEVEL configuration
|
||||||
/* BODLEVEL configuration
|
BODLEVEL2 BODLEVEL1 BODLEVEL0 Voltage
|
||||||
BODLEVEL2 BODLEVEL1 BODLEVEL0 Voltage
|
--------- --------- --------- --------
|
||||||
--------- --------- --------- --------
|
1 1 1 disabled
|
||||||
1 1 1 disabled
|
1 1 0 1.8V
|
||||||
1 1 0 1.8V
|
1 0 1 2.7V
|
||||||
1 0 1 2.7V
|
1 0 0 4.3V
|
||||||
1 0 0 4.3V
|
*/
|
||||||
*/
|
/* note: fuses are enabled by clearing the bit, so
|
||||||
/* note: fuses are enabled by clearing the bit, so
|
any fuses listed below are cleared fuses. */
|
||||||
any fuses listed below are cleared fuses. */
|
.extended = (FUSE_BODLEVEL1 & FUSE_BODLEVEL0)
|
||||||
.extended = (FUSE_BODLEVEL1 & FUSE_BODLEVEL0)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* AVR lock bits - unlocked */
|
/* AVR lock bits - unlocked */
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ static uint8_t Buttons;
|
|||||||
|
|
||||||
#if BDK_V1_HACK
|
#if BDK_V1_HACK
|
||||||
/* version 1 BDK workaournd for floating inputs */
|
/* version 1 BDK workaournd for floating inputs */
|
||||||
static void input_switch_workaround(void)
|
static void input_switch_workaround(
|
||||||
|
void)
|
||||||
{
|
{
|
||||||
/* configure the port pins for the switch - as outputs */
|
/* configure the port pins for the switch - as outputs */
|
||||||
BIT_SET(DDRA, DDA0);
|
BIT_SET(DDRA, DDA0);
|
||||||
@@ -60,7 +61,7 @@ static void input_switch_workaround(void)
|
|||||||
BIT_CLEAR(DDRA, DDA4);
|
BIT_CLEAR(DDRA, DDA4);
|
||||||
BIT_CLEAR(DDRA, DDA5);
|
BIT_CLEAR(DDRA, DDA5);
|
||||||
BIT_CLEAR(DDRA, DDA6);
|
BIT_CLEAR(DDRA, DDA6);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -74,17 +75,17 @@ void input_task(
|
|||||||
static uint8_t old_buttons = 0;
|
static uint8_t old_buttons = 0;
|
||||||
|
|
||||||
/* only check the inputs every debounce time */
|
/* only check the inputs every debounce time */
|
||||||
if (timer_elapsed_milliseconds(TIMER_DEBOUNCE,30)) {
|
if (timer_elapsed_milliseconds(TIMER_DEBOUNCE, 30)) {
|
||||||
timer_reset(TIMER_DEBOUNCE);
|
timer_reset(TIMER_DEBOUNCE);
|
||||||
/* pins used are PA6, PA5, PA4, PA3, PA2, PA1, PA0 */
|
/* pins used are PA6, PA5, PA4, PA3, PA2, PA1, PA0 */
|
||||||
#if BDK_V1_HACK
|
#if BDK_V1_HACK
|
||||||
/* version 1 BDK - workaround */
|
/* version 1 BDK - workaround */
|
||||||
value = (PINA&0x7F);
|
value = (PINA & 0x7F);
|
||||||
#else
|
#else
|
||||||
/* version 2 BDK - has inverted inputs */
|
/* version 2 BDK - has inverted inputs */
|
||||||
value = ~PINA;
|
value = ~PINA;
|
||||||
value &= 0x7F;
|
value &= 0x7F;
|
||||||
#endif
|
#endif
|
||||||
if (value == old_address) {
|
if (value == old_address) {
|
||||||
/* stable value */
|
/* stable value */
|
||||||
Address_Switch = old_address;
|
Address_Switch = old_address;
|
||||||
@@ -111,7 +112,7 @@ bool input_button_value(
|
|||||||
uint8_t index)
|
uint8_t index)
|
||||||
{
|
{
|
||||||
bool value = false;
|
bool value = false;
|
||||||
|
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 0:
|
case 0:
|
||||||
value = BIT_CHECK(Buttons, 0);
|
value = BIT_CHECK(Buttons, 0);
|
||||||
@@ -131,8 +132,8 @@ bool input_button_value(
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -159,10 +159,11 @@ void idle_init(
|
|||||||
void idle_task(
|
void idle_task(
|
||||||
void)
|
void)
|
||||||
{
|
{
|
||||||
/* do nothing */
|
/* do nothing */
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_init(void)
|
void test_init(
|
||||||
|
void)
|
||||||
{
|
{
|
||||||
timer_reset(TIMER_LED_3);
|
timer_reset(TIMER_LED_3);
|
||||||
timer_reset(TIMER_LED_4);
|
timer_reset(TIMER_LED_4);
|
||||||
@@ -170,21 +171,21 @@ void test_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void test_task(
|
void test_task(
|
||||||
void)
|
void)
|
||||||
{
|
{
|
||||||
uint8_t buffer[32] = "BACnet: 0000000\r\n";
|
uint8_t buffer[32] = "BACnet: 0000000\r\n";
|
||||||
uint8_t nbytes = 17;
|
uint8_t nbytes = 17;
|
||||||
uint8_t data_register = 0;
|
uint8_t data_register = 0;
|
||||||
|
|
||||||
if (timer_elapsed_seconds(TIMER_TEST, 1)) {
|
if (timer_elapsed_seconds(TIMER_TEST, 1)) {
|
||||||
timer_reset(TIMER_TEST);
|
timer_reset(TIMER_TEST);
|
||||||
buffer[8] = (MSTP_MAC_Address&BIT0)?'1':'0';
|
buffer[8] = (MSTP_MAC_Address & BIT0) ? '1' : '0';
|
||||||
buffer[9] = (MSTP_MAC_Address&BIT1)?'1':'0';
|
buffer[9] = (MSTP_MAC_Address & BIT1) ? '1' : '0';
|
||||||
buffer[10] = (MSTP_MAC_Address&BIT2)?'1':'0';
|
buffer[10] = (MSTP_MAC_Address & BIT2) ? '1' : '0';
|
||||||
buffer[11] = (MSTP_MAC_Address&BIT3)?'1':'0';
|
buffer[11] = (MSTP_MAC_Address & BIT3) ? '1' : '0';
|
||||||
buffer[12] = (MSTP_MAC_Address&BIT4)?'1':'0';
|
buffer[12] = (MSTP_MAC_Address & BIT4) ? '1' : '0';
|
||||||
buffer[13] = (MSTP_MAC_Address&BIT5)?'1':'0';
|
buffer[13] = (MSTP_MAC_Address & BIT5) ? '1' : '0';
|
||||||
buffer[14] = (MSTP_MAC_Address&BIT6)?'1':'0';
|
buffer[14] = (MSTP_MAC_Address & BIT6) ? '1' : '0';
|
||||||
serial_bytes_send(buffer, nbytes);
|
serial_bytes_send(buffer, nbytes);
|
||||||
}
|
}
|
||||||
if (serial_byte_get(&data_register)) {
|
if (serial_byte_get(&data_register)) {
|
||||||
|
|||||||
@@ -117,7 +117,8 @@ void serial_byte_send(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void serial_byte_transmit_complete(void)
|
void serial_byte_transmit_complete(
|
||||||
|
void)
|
||||||
{
|
{
|
||||||
/* was the frame sent? */
|
/* was the frame sent? */
|
||||||
while (!BIT_CHECK(UCSR1A, TXC1)) {
|
while (!BIT_CHECK(UCSR1A, TXC1)) {
|
||||||
|
|||||||
@@ -38,11 +38,12 @@ extern "C" {
|
|||||||
void serial_bytes_send(
|
void serial_bytes_send(
|
||||||
uint8_t * buffer, /* data to send */
|
uint8_t * buffer, /* data to send */
|
||||||
uint16_t nbytes); /* number of bytes of data */
|
uint16_t nbytes); /* number of bytes of data */
|
||||||
|
|
||||||
/* byte transmit */
|
/* byte transmit */
|
||||||
void serial_byte_send(
|
void serial_byte_send(
|
||||||
uint8_t ch);
|
uint8_t ch);
|
||||||
void serial_byte_transmit_complete(void);
|
void serial_byte_transmit_complete(
|
||||||
|
void);
|
||||||
|
|
||||||
uint32_t serial_baud_rate(
|
uint32_t serial_baud_rate(
|
||||||
void);
|
void);
|
||||||
|
|||||||
@@ -33,16 +33,18 @@ static volatile uint32_t Millisecond_Counter[MAX_MILLISECOND_TIMERS];
|
|||||||
|
|
||||||
/* start time for the clock */
|
/* start time for the clock */
|
||||||
static struct timespec start;
|
static struct timespec start;
|
||||||
uint32_t timeGetTime(void)
|
uint32_t timeGetTime(
|
||||||
|
void)
|
||||||
{
|
{
|
||||||
struct timespec now;
|
struct timespec now;
|
||||||
uint32_t ticks;
|
uint32_t ticks;
|
||||||
|
|
||||||
clock_gettime(CLOCK_MONOTONIC,&now);
|
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||||
|
|
||||||
ticks = (now.tv_sec-start.tv_sec)*1000+
|
ticks =
|
||||||
(now.tv_nsec-start.tv_nsec)/1000000;
|
(now.tv_sec - start.tv_sec) * 1000 + (now.tv_nsec -
|
||||||
|
start.tv_nsec) / 1000000;
|
||||||
|
|
||||||
return ticks;
|
return ticks;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +58,7 @@ uint32_t timer_milliseconds(
|
|||||||
{
|
{
|
||||||
uint32_t now = timeGetTime();
|
uint32_t now = timeGetTime();
|
||||||
uint32_t delta_time = 0;
|
uint32_t delta_time = 0;
|
||||||
|
|
||||||
if (index < MAX_MILLISECOND_TIMERS) {
|
if (index < MAX_MILLISECOND_TIMERS) {
|
||||||
if (Millisecond_Counter[index] <= now) {
|
if (Millisecond_Counter[index] <= now) {
|
||||||
delta_time = now - Millisecond_Counter[index];
|
delta_time = now - Millisecond_Counter[index];
|
||||||
@@ -64,7 +66,7 @@ uint32_t timer_milliseconds(
|
|||||||
delta_time = (UINT32_MAX - Millisecond_Counter[index]) + now + 1;
|
delta_time = (UINT32_MAX - Millisecond_Counter[index]) + now + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return delta_time;
|
return delta_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +91,7 @@ bool timer_elapsed_seconds(
|
|||||||
unsigned index,
|
unsigned index,
|
||||||
uint32_t seconds)
|
uint32_t seconds)
|
||||||
{
|
{
|
||||||
return ((timer_milliseconds(index)/1000) >= seconds);
|
return ((timer_milliseconds(index) / 1000) >= seconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
@@ -101,7 +103,7 @@ bool timer_elapsed_minutes(
|
|||||||
unsigned index,
|
unsigned index,
|
||||||
uint32_t minutes)
|
uint32_t minutes)
|
||||||
{
|
{
|
||||||
return ((timer_milliseconds(index)/(1000*60)) >= minutes);
|
return ((timer_milliseconds(index) / (1000 * 60)) >= minutes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
@@ -113,12 +115,12 @@ uint32_t timer_reset(
|
|||||||
unsigned index)
|
unsigned index)
|
||||||
{
|
{
|
||||||
uint32_t timer_value = 0;
|
uint32_t timer_value = 0;
|
||||||
|
|
||||||
if (index < MAX_MILLISECOND_TIMERS) {
|
if (index < MAX_MILLISECOND_TIMERS) {
|
||||||
timer_value = timer_milliseconds(index);
|
timer_value = timer_milliseconds(index);
|
||||||
Millisecond_Counter[index] = timeGetTime();
|
Millisecond_Counter[index] = timeGetTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
return timer_value;
|
return timer_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,5 +132,5 @@ uint32_t timer_reset(
|
|||||||
void timer_init(
|
void timer_init(
|
||||||
void)
|
void)
|
||||||
{
|
{
|
||||||
clock_gettime(CLOCK_MONOTONIC,&start);
|
clock_gettime(CLOCK_MONOTONIC, &start);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,14 +29,15 @@
|
|||||||
|
|
||||||
/* Timer Module */
|
/* Timer Module */
|
||||||
#ifndef MAX_MILLISECOND_TIMERS
|
#ifndef MAX_MILLISECOND_TIMERS
|
||||||
#define TIMER_SILENCE 0
|
#define TIMER_SILENCE 0
|
||||||
#define MAX_MILLISECOND_TIMERS 1
|
#define MAX_MILLISECOND_TIMERS 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
uint32_t timeGetTime(void);
|
uint32_t timeGetTime(
|
||||||
|
void);
|
||||||
|
|
||||||
void timer_init(
|
void timer_init(
|
||||||
void);
|
void);
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#define STRICT 1
|
#define STRICT 1
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <MMSystem.h> /* for multimedia timers */
|
#include <MMSystem.h> /* for multimedia timers */
|
||||||
|
|
||||||
/* Number of MS/TP Packets Rx/Tx */
|
/* Number of MS/TP Packets Rx/Tx */
|
||||||
uint16_t MSTP_Packets = 0;
|
uint16_t MSTP_Packets = 0;
|
||||||
@@ -77,7 +77,7 @@ static uint16_t Timer_Silence(
|
|||||||
delta_time = 0xFFFF;
|
delta_time = 0xFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (uint16_t)delta_time;
|
return (uint16_t) delta_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Timer_Silence_Reset(
|
static void Timer_Silence_Reset(
|
||||||
@@ -659,9 +659,10 @@ bool dlmstp_init(
|
|||||||
#endif
|
#endif
|
||||||
/* set timer resolution */
|
/* set timer resolution */
|
||||||
if (timeGetDevCaps(&tc, sizeof(TIMECAPS)) != TIMERR_NOERROR) {
|
if (timeGetDevCaps(&tc, sizeof(TIMECAPS)) != TIMERR_NOERROR) {
|
||||||
fprintf(stderr, "Failed to set timer resolution\n");
|
fprintf(stderr, "Failed to set timer resolution\n");
|
||||||
}
|
}
|
||||||
TimeBeginPeriod = min(max(tc.wPeriodMin, TARGET_RESOLUTION), tc.wPeriodMax);
|
TimeBeginPeriod =
|
||||||
|
min(max(tc.wPeriodMin, TARGET_RESOLUTION), tc.wPeriodMax);
|
||||||
timeBeginPeriod(TimeBeginPeriod);
|
timeBeginPeriod(TimeBeginPeriod);
|
||||||
|
|
||||||
/* start the threads */
|
/* start the threads */
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#define STRICT 1
|
#define STRICT 1
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <MMSystem.h>
|
#include <MMSystem.h>
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
|
||||||
/* counter for the various timers */
|
/* counter for the various timers */
|
||||||
@@ -63,7 +63,7 @@ uint32_t timer_milliseconds(
|
|||||||
{
|
{
|
||||||
uint32_t now = timeGetTime();
|
uint32_t now = timeGetTime();
|
||||||
uint32_t delta_time = 0;
|
uint32_t delta_time = 0;
|
||||||
|
|
||||||
|
|
||||||
if (index < MAX_MILLISECOND_TIMERS) {
|
if (index < MAX_MILLISECOND_TIMERS) {
|
||||||
if (Millisecond_Counter[index] <= now) {
|
if (Millisecond_Counter[index] <= now) {
|
||||||
@@ -97,7 +97,7 @@ bool timer_elapsed_seconds(
|
|||||||
unsigned index,
|
unsigned index,
|
||||||
uint32_t seconds)
|
uint32_t seconds)
|
||||||
{
|
{
|
||||||
return ((timer_milliseconds(index)/1000) >= seconds);
|
return ((timer_milliseconds(index) / 1000) >= seconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
@@ -109,7 +109,7 @@ bool timer_elapsed_minutes(
|
|||||||
unsigned index,
|
unsigned index,
|
||||||
uint32_t minutes)
|
uint32_t minutes)
|
||||||
{
|
{
|
||||||
return ((timer_milliseconds(index)/(1000*60)) >= minutes);
|
return ((timer_milliseconds(index) / (1000 * 60)) >= minutes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
@@ -140,7 +140,7 @@ void timer_init(
|
|||||||
|
|
||||||
/* set timer resolution */
|
/* set timer resolution */
|
||||||
if (timeGetDevCaps(&tc, sizeof(TIMECAPS)) != TIMERR_NOERROR) {
|
if (timeGetDevCaps(&tc, sizeof(TIMECAPS)) != TIMERR_NOERROR) {
|
||||||
fprintf(stderr, "Failed to get timer resolution parameters\n");
|
fprintf(stderr, "Failed to get timer resolution parameters\n");
|
||||||
}
|
}
|
||||||
/* configure for 1ms resolution - if possible */
|
/* configure for 1ms resolution - if possible */
|
||||||
period = min(max(tc.wPeriodMin, 1), tc.wPeriodMax);
|
period = min(max(tc.wPeriodMin, 1), tc.wPeriodMax);
|
||||||
|
|||||||
@@ -43,8 +43,8 @@
|
|||||||
|
|
||||||
/* Timer Module */
|
/* Timer Module */
|
||||||
#ifndef MAX_MILLISECOND_TIMERS
|
#ifndef MAX_MILLISECOND_TIMERS
|
||||||
#define TIMER_SILENCE 0
|
#define TIMER_SILENCE 0
|
||||||
#define MAX_MILLISECOND_TIMERS 1
|
#define MAX_MILLISECOND_TIMERS 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ int alarm_ack_encode_service_request(
|
|||||||
|
|
||||||
len =
|
len =
|
||||||
encode_context_object_id(&apdu[apdu_len], 1,
|
encode_context_object_id(&apdu[apdu_len], 1,
|
||||||
(int)data->eventObjectIdentifier.type,
|
(int) data->eventObjectIdentifier.type,
|
||||||
data->eventObjectIdentifier.instance);
|
data->eventObjectIdentifier.instance);
|
||||||
apdu_len += len;
|
apdu_len += len;
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@ int alarm_ack_decode_service_request(
|
|||||||
{
|
{
|
||||||
int len = 0;
|
int len = 0;
|
||||||
int section_len;
|
int section_len;
|
||||||
uint32_t enumValue;
|
uint32_t enumValue;
|
||||||
|
|
||||||
if (-1 == (section_len =
|
if (-1 == (section_len =
|
||||||
decode_context_unsigned(&apdu[len], 0,
|
decode_context_unsigned(&apdu[len], 0,
|
||||||
@@ -141,11 +141,10 @@ int alarm_ack_decode_service_request(
|
|||||||
len += section_len;
|
len += section_len;
|
||||||
|
|
||||||
if (-1 == (section_len =
|
if (-1 == (section_len =
|
||||||
decode_context_enumerated(&apdu[len], 2,
|
decode_context_enumerated(&apdu[len], 2, &enumValue))) {
|
||||||
&enumValue))) {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
data->eventTypeAcked = (BACNET_EVENT_TYPE)enumValue;
|
data->eventTypeAcked = (BACNET_EVENT_TYPE) enumValue;
|
||||||
len += section_len;
|
len += section_len;
|
||||||
|
|
||||||
if (-1 == (section_len =
|
if (-1 == (section_len =
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ int arf_decode_service_request(
|
|||||||
if (tag_number != BACNET_APPLICATION_TAG_OBJECT_ID)
|
if (tag_number != BACNET_APPLICATION_TAG_OBJECT_ID)
|
||||||
return -1;
|
return -1;
|
||||||
len += decode_object_id(&apdu[len], &type, &data->object_instance);
|
len += decode_object_id(&apdu[len], &type, &data->object_instance);
|
||||||
data->object_type = (BACNET_OBJECT_TYPE)type;
|
data->object_type = (BACNET_OBJECT_TYPE) type;
|
||||||
if (decode_is_opening_tag_number(&apdu[len], 0)) {
|
if (decode_is_opening_tag_number(&apdu[len], 0)) {
|
||||||
data->access = FILE_STREAM_ACCESS;
|
data->access = FILE_STREAM_ACCESS;
|
||||||
/* a tag number is not extended so only one octet */
|
/* a tag number is not extended so only one octet */
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ int awf_decode_service_request(
|
|||||||
if (tag_number != BACNET_APPLICATION_TAG_OBJECT_ID)
|
if (tag_number != BACNET_APPLICATION_TAG_OBJECT_ID)
|
||||||
return -1;
|
return -1;
|
||||||
len += decode_object_id(&apdu[len], &type, &data->object_instance);
|
len += decode_object_id(&apdu[len], &type, &data->object_instance);
|
||||||
data->object_type = (BACNET_OBJECT_TYPE)type;
|
data->object_type = (BACNET_OBJECT_TYPE) type;
|
||||||
if (decode_is_opening_tag_number(&apdu[len], 0)) {
|
if (decode_is_opening_tag_number(&apdu[len], 0)) {
|
||||||
data->access = FILE_STREAM_ACCESS;
|
data->access = FILE_STREAM_ACCESS;
|
||||||
/* a tag number of 2 is not extended so only one octet */
|
/* a tag number of 2 is not extended so only one octet */
|
||||||
|
|||||||
@@ -744,7 +744,7 @@ bool bacapp_print_value(
|
|||||||
characterstring_value(&value->type.Character_String);
|
characterstring_value(&value->type.Character_String);
|
||||||
fprintf(stream, "\"");
|
fprintf(stream, "\"");
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
if (isprint(*((unsigned char *)char_str))) {
|
if (isprint(*((unsigned char *) char_str))) {
|
||||||
fprintf(stream, "%c", *char_str);
|
fprintf(stream, "%c", *char_str);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stream, ".");
|
fprintf(stream, ".");
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ int bacapp_decode_device_obj_property_ref(
|
|||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
int apdu_len = 0;
|
int apdu_len = 0;
|
||||||
uint32_t enumValue;
|
uint32_t enumValue;
|
||||||
if (-1 == (len =
|
if (-1 == (len =
|
||||||
decode_context_object_id(&apdu[apdu_len], 0,
|
decode_context_object_id(&apdu[apdu_len], 0,
|
||||||
&value->objectIdentifier.type,
|
&value->objectIdentifier.type,
|
||||||
@@ -105,11 +105,10 @@ int bacapp_decode_device_obj_property_ref(
|
|||||||
apdu_len += len;
|
apdu_len += len;
|
||||||
|
|
||||||
if (-1 == (len =
|
if (-1 == (len =
|
||||||
decode_context_enumerated(&apdu[apdu_len], 1,
|
decode_context_enumerated(&apdu[apdu_len], 1, &enumValue))) {
|
||||||
&enumValue))) {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->propertyIdentifier = (BACNET_PROPERTY_ID)enumValue;
|
value->propertyIdentifier = (BACNET_PROPERTY_ID) enumValue;
|
||||||
apdu_len += len;
|
apdu_len += len;
|
||||||
|
|
||||||
if (decode_is_context_tag(&apdu[apdu_len], 2)) {
|
if (decode_is_context_tag(&apdu[apdu_len], 2)) {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ int bacapp_decode_property_state(
|
|||||||
int len = 0;
|
int len = 0;
|
||||||
uint32_t len_value_type;
|
uint32_t len_value_type;
|
||||||
int section_length;
|
int section_length;
|
||||||
uint32_t enumValue;
|
uint32_t enumValue;
|
||||||
|
|
||||||
section_length =
|
section_length =
|
||||||
decode_tag_number_and_value(&apdu[len], (uint8_t *) & value->tag,
|
decode_tag_number_and_value(&apdu[len], (uint8_t *) & value->tag,
|
||||||
@@ -68,7 +68,7 @@ int bacapp_decode_property_state(
|
|||||||
&enumValue))) {
|
&enumValue))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->state.binaryValue = (BACNET_BINARY_PV)enumValue;
|
value->state.binaryValue = (BACNET_BINARY_PV) enumValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EVENT_TYPE:
|
case EVENT_TYPE:
|
||||||
@@ -77,7 +77,7 @@ int bacapp_decode_property_state(
|
|||||||
&enumValue))) {
|
&enumValue))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->state.eventType = (BACNET_EVENT_TYPE)enumValue;
|
value->state.eventType = (BACNET_EVENT_TYPE) enumValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case POLARITY:
|
case POLARITY:
|
||||||
@@ -86,7 +86,7 @@ int bacapp_decode_property_state(
|
|||||||
&enumValue))) {
|
&enumValue))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->state.polarity = (BACNET_POLARITY)enumValue;
|
value->state.polarity = (BACNET_POLARITY) enumValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROGRAM_CHANGE:
|
case PROGRAM_CHANGE:
|
||||||
@@ -95,7 +95,7 @@ int bacapp_decode_property_state(
|
|||||||
&enumValue))) {
|
&enumValue))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->state.programChange = (BACNET_PROGRAM_REQUEST)enumValue;
|
value->state.programChange = (BACNET_PROGRAM_REQUEST) enumValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROGRAM_STATE:
|
case PROGRAM_STATE:
|
||||||
@@ -104,7 +104,7 @@ int bacapp_decode_property_state(
|
|||||||
&enumValue))) {
|
&enumValue))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->state.programState = (BACNET_PROGRAM_STATE)enumValue;
|
value->state.programState = (BACNET_PROGRAM_STATE) enumValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case REASON_FOR_HALT:
|
case REASON_FOR_HALT:
|
||||||
@@ -113,7 +113,7 @@ int bacapp_decode_property_state(
|
|||||||
&enumValue))) {
|
&enumValue))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->state.programError = (BACNET_PROGRAM_ERROR)enumValue;
|
value->state.programError = (BACNET_PROGRAM_ERROR) enumValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RELIABILITY:
|
case RELIABILITY:
|
||||||
@@ -122,7 +122,7 @@ int bacapp_decode_property_state(
|
|||||||
&enumValue))) {
|
&enumValue))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->state.reliability = (BACNET_RELIABILITY)enumValue;
|
value->state.reliability = (BACNET_RELIABILITY) enumValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE:
|
case STATE:
|
||||||
@@ -131,7 +131,7 @@ int bacapp_decode_property_state(
|
|||||||
&enumValue))) {
|
&enumValue))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->state.state = (BACNET_EVENT_STATE)enumValue;
|
value->state.state = (BACNET_EVENT_STATE) enumValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SYSTEM_STATUS:
|
case SYSTEM_STATUS:
|
||||||
@@ -140,7 +140,7 @@ int bacapp_decode_property_state(
|
|||||||
&enumValue))) {
|
&enumValue))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->state.systemStatus = (BACNET_DEVICE_STATUS)enumValue;
|
value->state.systemStatus = (BACNET_DEVICE_STATUS) enumValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UNITS:
|
case UNITS:
|
||||||
@@ -149,7 +149,7 @@ int bacapp_decode_property_state(
|
|||||||
&enumValue))) {
|
&enumValue))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->state.units = (BACNET_ENGINEERING_UNITS)enumValue;
|
value->state.units = (BACNET_ENGINEERING_UNITS) enumValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UNSIGNED_VALUE:
|
case UNSIGNED_VALUE:
|
||||||
@@ -166,7 +166,7 @@ int bacapp_decode_property_state(
|
|||||||
&enumValue))) {
|
&enumValue))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->state.lifeSafetyMode = (BACNET_LIFE_SAFETY_MODE)enumValue;
|
value->state.lifeSafetyMode = (BACNET_LIFE_SAFETY_MODE) enumValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LIFE_SAFETY_STATE:
|
case LIFE_SAFETY_STATE:
|
||||||
@@ -175,7 +175,8 @@ int bacapp_decode_property_state(
|
|||||||
&enumValue))) {
|
&enumValue))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
value->state.lifeSafetyState = (BACNET_LIFE_SAFETY_STATE)enumValue;
|
value->state.lifeSafetyState =
|
||||||
|
(BACNET_LIFE_SAFETY_STATE) enumValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -910,7 +910,7 @@ uint16_t bvlc_receive(
|
|||||||
Register-Foreign-Device message */
|
Register-Foreign-Device message */
|
||||||
/* FIXME: clients may need this result */
|
/* FIXME: clients may need this result */
|
||||||
(void) decode_unsigned16(&npdu[4], &result_code);
|
(void) decode_unsigned16(&npdu[4], &result_code);
|
||||||
BVLC_Result_Code = (BACNET_BVLC_RESULT)result_code;
|
BVLC_Result_Code = (BACNET_BVLC_RESULT) result_code;
|
||||||
debug_printf("BVLC: Result Code=%d\n", BVLC_Result_Code);
|
debug_printf("BVLC: Result Code=%d\n", BVLC_Result_Code);
|
||||||
/* not an NPDU */
|
/* not an NPDU */
|
||||||
npdu_len = 0;
|
npdu_len = 0;
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ int cov_notify_decode_service_request(
|
|||||||
decode_tag_number_and_value(&apdu[len], &tag_number,
|
decode_tag_number_and_value(&apdu[len], &tag_number,
|
||||||
&len_value);
|
&len_value);
|
||||||
len += decode_enumerated(&apdu[len], len_value, &property);
|
len += decode_enumerated(&apdu[len], len_value, &property);
|
||||||
value->propertyIdentifier = (BACNET_PROPERTY_ID)property;
|
value->propertyIdentifier = (BACNET_PROPERTY_ID) property;
|
||||||
} else {
|
} else {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -572,7 +572,8 @@ int cov_subscribe_property_decode_service_request(
|
|||||||
decode_tag_number_and_value(&apdu[len], &tag_number,
|
decode_tag_number_and_value(&apdu[len], &tag_number,
|
||||||
&len_value);
|
&len_value);
|
||||||
len += decode_enumerated(&apdu[len], len_value, &property);
|
len += decode_enumerated(&apdu[len], len_value, &property);
|
||||||
data->monitoredProperty.propertyIdentifier = (BACNET_PROPERTY_ID)property;
|
data->monitoredProperty.propertyIdentifier =
|
||||||
|
(BACNET_PROPERTY_ID) property;
|
||||||
} else
|
} else
|
||||||
return -4;
|
return -4;
|
||||||
/* the optional array index is tag 1 */
|
/* the optional array index is tag 1 */
|
||||||
|
|||||||
@@ -504,7 +504,7 @@ int event_notify_decode_service_request(
|
|||||||
decode_context_enumerated(&apdu[len], 6, &value)) == -1) {
|
decode_context_enumerated(&apdu[len], 6, &value)) == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
data->eventType = (BACNET_EVENT_TYPE)value;
|
data->eventType = (BACNET_EVENT_TYPE) value;
|
||||||
len += section_length;
|
len += section_length;
|
||||||
}
|
}
|
||||||
/* tag 7 - messageText */
|
/* tag 7 - messageText */
|
||||||
@@ -533,7 +533,7 @@ int event_notify_decode_service_request(
|
|||||||
decode_context_enumerated(&apdu[len], 8, &value)) == -1) {
|
decode_context_enumerated(&apdu[len], 8, &value)) == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
data->notifyType = (BACNET_NOTIFY_TYPE)value;
|
data->notifyType = (BACNET_NOTIFY_TYPE) value;
|
||||||
len += section_length;
|
len += section_length;
|
||||||
}
|
}
|
||||||
switch (data->notifyType) {
|
switch (data->notifyType) {
|
||||||
@@ -553,7 +553,7 @@ int event_notify_decode_service_request(
|
|||||||
&value)) == -1) {
|
&value)) == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
data->fromState = (BACNET_EVENT_STATE)value;
|
data->fromState = (BACNET_EVENT_STATE) value;
|
||||||
len += section_length;
|
len += section_length;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -561,14 +561,14 @@ int event_notify_decode_service_request(
|
|||||||
/* FIXME: handle this case */
|
/* FIXME: handle this case */
|
||||||
default:
|
default:
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
}
|
}
|
||||||
/* tag 11 - toState */
|
/* tag 11 - toState */
|
||||||
if ((section_length =
|
if ((section_length =
|
||||||
decode_context_enumerated(&apdu[len], 11, &value)) == -1) {
|
decode_context_enumerated(&apdu[len], 11, &value)) == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
data->toState = (BACNET_EVENT_STATE)value;
|
data->toState = (BACNET_EVENT_STATE) value;
|
||||||
len += section_length;
|
len += section_length;
|
||||||
}
|
}
|
||||||
/* tag 12 - eventValues */
|
/* tag 12 - eventValues */
|
||||||
@@ -750,7 +750,7 @@ int event_notify_decode_service_request(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
data->notificationParams.changeOfLifeSafety.newState =
|
data->notificationParams.changeOfLifeSafety.newState =
|
||||||
(BACNET_LIFE_SAFETY_STATE)value;
|
(BACNET_LIFE_SAFETY_STATE) value;
|
||||||
len += section_length;
|
len += section_length;
|
||||||
|
|
||||||
if (-1 == (section_length =
|
if (-1 == (section_length =
|
||||||
@@ -759,7 +759,7 @@ int event_notify_decode_service_request(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
data->notificationParams.changeOfLifeSafety.newMode =
|
data->notificationParams.changeOfLifeSafety.newMode =
|
||||||
(BACNET_LIFE_SAFETY_MODE)value;
|
(BACNET_LIFE_SAFETY_MODE) value;
|
||||||
len += section_length;
|
len += section_length;
|
||||||
|
|
||||||
if (-1 == (section_length =
|
if (-1 == (section_length =
|
||||||
@@ -776,7 +776,8 @@ int event_notify_decode_service_request(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
data->notificationParams.changeOfLifeSafety.
|
data->notificationParams.changeOfLifeSafety.
|
||||||
operationExpected = (BACNET_LIFE_SAFETY_OPERATION)value;
|
operationExpected =
|
||||||
|
(BACNET_LIFE_SAFETY_OPERATION) value;
|
||||||
len += section_length;
|
len += section_length;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ int lso_decode_service_request(
|
|||||||
decode_context_enumerated(&apdu[len], 2, &operation)) == -1) {
|
decode_context_enumerated(&apdu[len], 2, &operation)) == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
data->operation = (BACNET_LIFE_SAFETY_OPERATION)operation;
|
data->operation = (BACNET_LIFE_SAFETY_OPERATION) operation;
|
||||||
len += section_length;
|
len += section_length;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ void tsm_timer_milliseconds(
|
|||||||
TSM_List[i].RetryCount--;
|
TSM_List[i].RetryCount--;
|
||||||
TSM_List[i].RequestTimer = apdu_timeout();
|
TSM_List[i].RequestTimer = apdu_timeout();
|
||||||
if (TSM_List[i].RetryCount) {
|
if (TSM_List[i].RetryCount) {
|
||||||
datalink_send_pdu(&TSM_List[i].dest,
|
datalink_send_pdu(&TSM_List[i].dest,
|
||||||
&TSM_List[i].npdu_data, &TSM_List[i].apdu[0],
|
&TSM_List[i].npdu_data, &TSM_List[i].apdu[0],
|
||||||
TSM_List[i].apdu_len);
|
TSM_List[i].apdu_len);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user