Ran indent script.

This commit is contained in:
skarg
2009-07-29 18:06:33 +00:00
parent 551f2767e0
commit db61a1122f
37 changed files with 227 additions and 218 deletions
+24 -27
View File
@@ -61,8 +61,7 @@ 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 */
@@ -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,7 +188,8 @@ 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 */
@@ -201,27 +201,25 @@ static void packet_statistics_save(void)
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
+2 -1
View File
@@ -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:
+2 -4
View File
@@ -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
+2 -2
View File
@@ -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);
+4 -4
View File
@@ -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) {
+1 -1
View File
@@ -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);
+5 -2
View File
@@ -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"
+13 -8
View File
@@ -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");
} }
+1 -1
View File
@@ -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);
-1
View File
@@ -219,5 +219,4 @@ extern "C" {
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif /* __cplusplus */ #endif /* __cplusplus */
#endif #endif
+31 -30
View File
@@ -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);
+4 -3
View File
@@ -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
+6 -10
View File
@@ -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"
@@ -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;
+1 -1
View File
@@ -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 {
+24 -25
View File
@@ -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 */
+4 -3
View File
@@ -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);
@@ -74,12 +75,12 @@ 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;
+11 -10
View File
@@ -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,7 +171,7 @@ 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;
@@ -178,13 +179,13 @@ void test_task(
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)) {
+2 -1
View File
@@ -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)) {
+2 -1
View File
@@ -42,7 +42,8 @@ extern "C" {
/* 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);
+9 -7
View File
@@ -33,15 +33,17 @@ 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;
} }
@@ -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);
} }
/************************************************************************* /*************************************************************************
@@ -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);
} }
+4 -3
View File
@@ -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);
+5 -4
View File
@@ -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 */
+3 -3
View File
@@ -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);
+2 -2
View File
@@ -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
+4 -5
View File
@@ -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 =
+1 -1
View File
@@ -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 */
+1 -1
View File
@@ -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 */
+1 -1
View File
@@ -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, ".");
+3 -4
View File
@@ -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)) {
+14 -13
View File
@@ -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:
+1 -1
View File
@@ -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;
+3 -2
View File
@@ -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 */
+8 -7
View File
@@ -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;
@@ -568,7 +568,7 @@ int event_notify_decode_service_request(
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;
+1 -1
View File
@@ -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;
/* /*
+1 -1
View File
@@ -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 {