Changed makefile install to handle slow clock on AVR.

This commit is contained in:
skarg
2010-04-22 02:09:17 +00:00
parent ad8cab409d
commit 202bc06768
2 changed files with 36 additions and 32 deletions
@@ -211,6 +211,8 @@ HEX_FUSE_FLAGS += --change-section-lma .fuse=0 --no-change-warnings
AVRDUDE_FLAGS = -c $(AVRDUDE_PROGRAMMERID)
AVRDUDE_FLAGS += -p $(AVRDUDE_MCU)
AVRDUDE_FLAGS += -P $(AVRDUDE_PORT)
AVRDUDE_FLAGS += -B 8
# Fuse high byte (0=enable,1=disable):
# 0x93 = 1 0 0 1 0 0 1 1
+34 -32
View File
@@ -118,9 +118,6 @@ static struct object_functions {
The properties that are constant can be hard coded
into the read-property encoding. */
static uint32_t Object_Instance_Number;
static char My_Object_Name[NV_EEPROM_DEVICE_NAME_SIZE];
static uint8_t My_Object_Name_Encoding;
static uint8_t My_Object_Name_Length;
static BACNET_DEVICE_STATUS System_Status = STATUS_OPERATIONAL;
static BACNET_REINITIALIZED_STATE Reinitialize_State =
@@ -364,11 +361,37 @@ uint32_t Device_Index_To_Instance(
char *Device_Name(
uint32_t object_instance)
{
uint8_t encoding = 0;
uint8_t length = 0;
static char name[NV_EEPROM_DEVICE_NAME_SIZE+1] = "";
char *pName = NULL;
if (object_instance == Object_Instance_Number) {
return My_Object_Name;
eeprom_bytes_read(NV_EEPROM_DEVICE_NAME_ENCODING, &encoding, 1);
eeprom_bytes_read(NV_EEPROM_DEVICE_NAME_LENGTH, &length, 1);
eeprom_bytes_read(NV_EEPROM_DEVICE_NAME_0, (uint8_t *) & name,
NV_EEPROM_DEVICE_NAME_SIZE);
if ((encoding >= MAX_CHARACTER_STRING_ENCODING) ||
(length > NV_EEPROM_DEVICE_NAME_SIZE) ||
(length < 1)) {
encoding = CHARACTER_ANSI_X34;
eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_ENCODING,
&encoding, 1);
sprintf(name, "DEVICE-%lu", Object_Instance_Number);
eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_0,
(uint8_t *) & name[0], NV_EEPROM_DEVICE_NAME_SIZE);
length = strlen(name);
eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_LENGTH, &length, 1);
}
if (length < NV_EEPROM_DEVICE_NAME_SIZE) {
name[length] = 0;
} else {
name[NV_EEPROM_DEVICE_NAME_SIZE] = 0;
}
pName = &name[0];
}
return NULL;
return pName;
}
bool Device_Reinitialize(
@@ -415,24 +438,7 @@ void Device_Init(
(uint8_t *) & Object_Instance_Number,
sizeof(Object_Instance_Number));
}
eeprom_bytes_read(NV_EEPROM_DEVICE_NAME_ENCODING, &My_Object_Name_Encoding,
1);
eeprom_bytes_read(NV_EEPROM_DEVICE_NAME_LENGTH, &My_Object_Name_Length, 1);
eeprom_bytes_read(NV_EEPROM_DEVICE_NAME_0, (uint8_t *) & My_Object_Name[0],
NV_EEPROM_DEVICE_NAME_SIZE);
if ((My_Object_Name_Encoding >= MAX_CHARACTER_STRING_ENCODING) ||
(My_Object_Name_Length > NV_EEPROM_DEVICE_NAME_SIZE) ||
(My_Object_Name_Length < 1)) {
My_Object_Name_Encoding = CHARACTER_ANSI_X34;
eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_ENCODING,
&My_Object_Name_Encoding, 1);
sprintf(My_Object_Name, "DEVICE-%lu", Object_Instance_Number);
eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_0,
(uint8_t *) & My_Object_Name[0], NV_EEPROM_DEVICE_NAME_SIZE);
My_Object_Name_Length = strlen(My_Object_Name);
eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_LENGTH, &My_Object_Name_Length,
1);
}
(void)Device_Name(Object_Instance_Number);
}
/* methods to manipulate the data */
@@ -878,22 +884,18 @@ bool Device_Write_Property_Local(
uint8_t encoding =
characterstring_encoding(&value.type.Character_String);
if (encoding < MAX_CHARACTER_STRING_ENCODING) {
uint8_t i;
char *pCharString;
My_Object_Name_Encoding = encoding;
My_Object_Name_Length = length;
uint8_t small_length;
eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_ENCODING,
&My_Object_Name_Encoding, 1);
&encoding, 1);
small_length = length;
eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_LENGTH,
&My_Object_Name_Length, 1);
&small_length, 1);
pCharString =
characterstring_value(&value.
type.Character_String);
for (i = 0; i < My_Object_Name_Length; i++) {
My_Object_Name[i] = pCharString[i];
}
eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_0,
(uint8_t *) & My_Object_Name[0], length);
(uint8_t *) pCharString, length);
status = true;
} else {
wp_data->error_class = ERROR_CLASS_PROPERTY;