diff --git a/dynamixel_base/include/dynamixel_slave_registers.h b/dynamixel_base/include/dynamixel_slave_registers.h index 2a09dc5829e22af41fd05bd411e17e653d48c222..46cef2b79342753136e2514c7ce41c79383306a1 100644 --- a/dynamixel_base/include/dynamixel_slave_registers.h +++ b/dynamixel_base/include/dynamixel_slave_registers.h @@ -13,34 +13,14 @@ #define RETURN_LEVEL 0 -#ifndef DEFAULT_DEVICE_MODEL - #define DEFAULT_DEVICE_MODEL 0x7300 -#endif -#ifndef DEFAULT_FIRMWARE_VERSION - #define DEFAULT_FIRMWARE_VERSION 0x0001 -#endif -#ifndef DEFAULT_DEVICE_ID - #define DEFAULT_DEVICE_ID 0x0001 -#endif -#ifndef DEFAULT_BAUDRATE - #define DEFAULT_BAUDRATE 0x0010 -#endif -#ifndef DEFAULT_RETURN_DELAY - #define DEFAULT_RETURN_DELAY 0x0000 -#endif - -#ifndef DEFAULT_RETURN_LEVEL - #define DEFAULT_RETURN_LEVEL 0x0002 -#endif - -#define dyn_slave_control_eeprom_data(name,section_name,base_address1,base_address2) \ -unsigned short int name##_eeprom_data[] __attribute__ ((section (section_name)))={DEFAULT_DEVICE_MODEL&0x00FF,base_address1+DEVICE_MODEL, \ - (DEFAULT_DEVICE_MODEL>>8)&0x00FF,base_address1+DEVICE_MODEL+1, \ - DEFAULT_FIRMWARE_VERSION,base_address1+FIRMWARE_VERSION, \ - DEFAULT_DEVICE_ID,base_address1+DEVICE_ID, \ - DEFAULT_BAUDRATE,base_address1+BAUDRATE, \ - DEFAULT_RETURN_DELAY,base_address1+RETURN_DELAY, \ - DEFAULT_RETURN_LEVEL,base_address2+RETURN_LEVEL}; +#define dyn_slave_control_eeprom_data(name,section_name,base_address1,base_address2,DEFAULT_DEVICE_MODEL,DEFAULT_FIRMWARE_VERSION,DEFAULT_DEVICE_ID,DEFAULT_BAUDRATE,DEFAULT_RETURN_DELAY,DEFAULT_RETURN_LEVEL) \ +unsigned short int name##_eeprom_data[] __attribute__ ((section (section_name)))={DEFAULT_DEVICE_MODEL&0x00FF,(DEFAULT_DEVICE_ID<<8) + base_address1+DEVICE_MODEL, \ + (DEFAULT_DEVICE_MODEL>>8)&0x00FF,(DEFAULT_DEVICE_ID<<8) + base_address1+DEVICE_MODEL+1, \ + DEFAULT_FIRMWARE_VERSION,(DEFAULT_DEVICE_ID<<8) + base_address1+FIRMWARE_VERSION, \ + DEFAULT_DEVICE_ID,(DEFAULT_DEVICE_ID<<8) + base_address1+DEVICE_ID, \ + DEFAULT_BAUDRATE,(DEFAULT_DEVICE_ID<<8) + base_address1+BAUDRATE, \ + DEFAULT_RETURN_DELAY,(DEFAULT_DEVICE_ID<<8) + base_address1+RETURN_DELAY, \ + DEFAULT_RETURN_LEVEL,(DEFAULT_DEVICE_ID<<8) + base_address2+RETURN_LEVEL}; #endif diff --git a/dynamixel_base/src/dynamixel_slave_device.c b/dynamixel_base/src/dynamixel_slave_device.c index de9b3f7045f9e2cd9e18de9d50ed437fbe53c755..c11eecc6446d528b375a4c9dfb659730938d5642 100644 --- a/dynamixel_base/src/dynamixel_slave_device.c +++ b/dynamixel_base/src/dynamixel_slave_device.c @@ -10,36 +10,36 @@ void dyn_slave_device_write_cmd(TDynamixelSlaveDevice *device,unsigned short int if(ram_in_window(device->eeprom_base_address1+DEVICE_MODEL,2,address,length)) { if(ram_in_range(device->eeprom_base_address1+DEVICE_MODEL,address,length)) - ram_data[device->eeprom_base_address1+DEVICE_MODEL]=data[DEVICE_MODEL-offset]; + device->memory.data[device->eeprom_base_address1+DEVICE_MODEL]=data[DEVICE_MODEL-offset]; if(ram_in_range(device->eeprom_base_address1+DEVICE_MODEL+1,address,length)) - ram_data[device->eeprom_base_address1+DEVICE_MODEL+1]=data[DEVICE_MODEL+1-offset]; + device->memory.data[device->eeprom_base_address1+DEVICE_MODEL+1]=data[DEVICE_MODEL+1-offset]; } if(ram_in_range(device->eeprom_base_address1+DEVICE_ID,address,length)) { dyn_slave_device_set_address(device,data[DEVICE_ID-offset]); - ram_data[device->eeprom_base_address1+DEVICE_ID]=data[DEVICE_ID-offset]; + device->memory.data[device->eeprom_base_address1+DEVICE_ID]=data[DEVICE_ID-offset]; } if(ram_in_range(device->eeprom_base_address1+BAUDRATE,address,length)) { dyn_slave_set_baudrate(device->slave,2000000/(data[BAUDRATE-offset]+1)); - ram_data[device->eeprom_base_address1+BAUDRATE]=data[BAUDRATE-offset]; + device->memory.data[device->eeprom_base_address1+BAUDRATE]=data[BAUDRATE-offset]; } if(ram_in_range(device->eeprom_base_address1+RETURN_DELAY,address,length)) { dyn_slave_device_set_return_delay(device,data[RETURN_DELAY-offset]); - ram_data[device->eeprom_base_address1+RETURN_DELAY]=data[RETURN_DELAY-offset]; + device->memory.data[device->eeprom_base_address1+RETURN_DELAY]=data[RETURN_DELAY-offset]; } offset=address-device->eeprom_base_address2; if(ram_in_range(device->eeprom_base_address2+RETURN_LEVEL,address,length)) { dyn_slave_device_set_return_level(device,data[RETURN_LEVEL-offset]); - ram_data[device->eeprom_base_address2+RETURN_LEVEL]=data[RETURN_LEVEL-offset]; + device->memory.data[device->eeprom_base_address2+RETURN_LEVEL]=data[RETURN_LEVEL-offset]; } } -void dyn_slave_device_read_cmd(TDynamixelSlaveDevice *devicee,unsigned short int address,unsigned short int length,unsigned char *data) +void dyn_slave_device_read_cmd(TDynamixelSlaveDevice *device,unsigned short int address,unsigned short int length,unsigned char *data) { - ram_read_table(address,length,data); + ram_read_table(&device->memory,address,length,data); } void dummy_dyn_slave_device_on_ping(void) @@ -403,7 +403,7 @@ unsigned char dyn_slave_device_init(TDynamixelSlaveDevice *device,unsigned char device->bulk_read_pending=0x00; /* initialize memory module */ - mem_init(&device->memory); + mem_init(&device->memory,address); mem_module_init(&device->mem_module); device->mem_module.data=device; device->mem_module.write_cmd=(void(*)(void *,unsigned short int, unsigned short int,unsigned char *))dyn_slave_device_write_cmd;