updated and added some basic tests for the driver
This commit is contained in:
parent
7ae112a7ce
commit
06310475df
|
@ -1,4 +1,5 @@
|
||||||
add_subdirectory(led_driver)
|
add_subdirectory(led_driver)
|
||||||
|
add_subdirectory(gy521_driver)
|
||||||
|
|
||||||
|
|
||||||
add_executable(main
|
add_executable(main
|
||||||
|
@ -6,5 +7,6 @@ add_executable(main
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(main
|
target_link_libraries(main
|
||||||
led_driver
|
led_driver
|
||||||
|
gy521_driver
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
add_library(gy521_driver STATIC
|
||||||
|
gy521_driver.c
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(gy521_driver PUBLIC
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}
|
||||||
|
)
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* Author: Jake Goodwin
|
||||||
|
* Date: 2023
|
||||||
|
* Description:
|
||||||
|
*/
|
||||||
|
#include "gy521_driver.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct{
|
||||||
|
uint16_t x;
|
||||||
|
uint16_t y;
|
||||||
|
uint16_t z;
|
||||||
|
}gyro_values_struct;
|
||||||
|
|
||||||
|
typedef struct{
|
||||||
|
uint16_t x;
|
||||||
|
uint16_t y;
|
||||||
|
uint16_t z;
|
||||||
|
}accel_values_struct;
|
||||||
|
|
||||||
|
typedef struct{
|
||||||
|
_Bool (*init)(uint8_t slv_addr);
|
||||||
|
}methods_struct;
|
||||||
|
|
||||||
|
typedef struct{
|
||||||
|
uint8_t slave_address;
|
||||||
|
gyro_values_struct gyro;
|
||||||
|
accel_values_struct accel;
|
||||||
|
methods_struct methods;
|
||||||
|
}gy521_module_struct;
|
||||||
|
|
||||||
|
|
||||||
|
_Bool init_gy521(uint8_t slave_address) {
|
||||||
|
if(slave_address != TWI_GY521_ADDR1 && slave_address != TWI_GY521_ADDR2) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
_Bool module_test(gy521_module_struct *m)
|
||||||
|
{
|
||||||
|
_Bool ret = m->methods.init(TWI_GY521_ADDR1);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* returns 1 */
|
||||||
|
uint8_t test_function(void)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
/*
|
||||||
|
* Author: Jake Goodwin
|
||||||
|
* Date: 2023
|
||||||
|
* Description:
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef GY521_DRIVER_H
|
||||||
|
#define GY521_DRIVER_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ############################
|
||||||
|
* Defines
|
||||||
|
* ############################
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define STARTUP_DELAY 30 //in ms
|
||||||
|
#define TWI_GY521_ADDR1 0x68 //ADO Logic Low
|
||||||
|
#define TWI_GY521_ADDR2 0x69 //ADO Logic High
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ############################
|
||||||
|
* Types/Structures
|
||||||
|
* ############################
|
||||||
|
*/
|
||||||
|
//typedef struct gy521_module_struct *gy521_module;
|
||||||
|
typedef struct gy521_module_struct *gy521_module;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ############################
|
||||||
|
* Function Prototypes
|
||||||
|
* ############################
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*Function pointers for the TX and RX fuctionality*/
|
||||||
|
extern void twi_tx(uint8_t *data, uint8_t size);
|
||||||
|
extern void twi_rx(uint8_t *data, uint8_t size);
|
||||||
|
|
||||||
|
_Bool init_gy521(uint8_t slave_address);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_Bool module_test(struct gy521_module_struct *m);
|
||||||
|
uint8_t test_function(void);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* GY521_DRIVER_H */
|
Loading…
Reference in New Issue