How to read register value from ADXL345 Eval board?

Some of the functions can be adapted:

#define ACCEL_CS	A0
#define ACCEL_SCK	A1
#define ACCEL_DI		A2
#define ACCEL_DO	A3

#define SELECT_ACCEL()        digitalWrite(ACCEL_CS, LOW)
#define UNSELECT_ACCEL()    digitalWrite(ACCEL_CS, HIGH)

#define CLOCK_HIGH()	        digitalWrite(ACCEL_SCK, HIGH)
#define CLOCK_LOW()		digitalWrite(ACCEL_SCK, LOW)

char adxl345_read(char register_address){
	char read_address=0x80 | register_address;
	char register_value=0;
	
	CLOCK_HIGH();
	SELECT_ACCEL();	//Lower CS pin.
	
	for(int bit=7; bit>=0; bit--){
		CLOCK_LOW();
                digitalWrite(DI, read_address & (1<<bit));
		delayMicroseconds(1);
		CLOCK_HIGH();
		delayMicroseconds(1);
	}
	
	for(int bit=7; bit>=0; bit--){
		CLOCK_LOW();
		delayMicroseconds(1);
		
		CLOCK_HIGH();
		delayMicroseconds(1);
		
		register_value |= digitalRead(ADXL_DI)<<bit;
	}
	
	UNSELECT_ACCEL();
	
	return register_value;
}