12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #include "Hardware.h"
-
- #include "../../software/signal_processing_bsp/system.h"
-
- #include "../../software/signal_processing/system/task_sine.h"
- #include "../../software/signal_processing/system/task_rand.h"
- #include "../../software/signal_processing/system/task_add.h"
- #include "../../software/signal_processing/system/task_fft.h"
- #include "../../software/signal_processing/system/task_crc.h"
-
- Hardware * Hardware::instance = nullptr;
-
- Hardware * Hardware::getInstance() {
- if ( Hardware::instance == nullptr ) {
- Hardware::instance = new Hardware();
- }
-
- return Hardware::instance;
- }
-
- Hardware::~Hardware() {
- for ( uint32_t i = 0; i < 7; ++i ) {
- delete dataChannel[ i ];
- }
- }
-
- void Hardware::write( uint32_t base, uint32_t offset, uint32_t value ) {
- switch ( base ) {
- case DATA_CHANNEL_0_BASE: dataChannel[ 0 ]->write( offset, value ); break;
- case DATA_CHANNEL_1_BASE: dataChannel[ 1 ]->write( offset, value ); break;
- case DATA_CHANNEL_2_BASE: dataChannel[ 2 ]->write( offset, value ); break;
- case DATA_CHANNEL_3_BASE: dataChannel[ 3 ]->write( offset, value ); break;
- case DATA_CHANNEL_4_BASE: dataChannel[ 4 ]->write( offset, value ); break;
- case DATA_CHANNEL_5_BASE: dataChannel[ 5 ]->write( offset, value ); break;
- case DATA_CHANNEL_6_BASE: dataChannel[ 6 ]->write( offset, value ); break;
- case HARDWARE_TASK_0_BASE: task[ 0 ]->write( offset, value ); break;
- case HARDWARE_TASK_1_BASE: task[ 1 ]->write( offset, value ); break;
- case HARDWARE_TASK_2_BASE: task[ 2 ]->write( offset, value ); break;
- case HARDWARE_TASK_3_BASE: task[ 3 ]->write( offset, value ); break;
- case HARDWARE_TASK_4_BASE: task[ 4 ]->write( offset, value ); break;
- case HARDWARE_TASK_5_BASE: task[ 5 ]->write( offset, value ); break;
- case HARDWARE_TASK_6_BASE: task[ 6 ]->write( offset, value ); break;
- };
- }
-
- uint32_t Hardware::read( uint32_t base, uint32_t offset ) {
- switch ( base ) {
- case DATA_CHANNEL_0_BASE: return dataChannel[ 0 ]->read( offset );
- case DATA_CHANNEL_1_BASE: return dataChannel[ 1 ]->read( offset );
- case DATA_CHANNEL_2_BASE: return dataChannel[ 2 ]->read( offset );
- case DATA_CHANNEL_3_BASE: return dataChannel[ 3 ]->read( offset );
- case DATA_CHANNEL_4_BASE: return dataChannel[ 4 ]->read( offset );
- case DATA_CHANNEL_5_BASE: return dataChannel[ 5 ]->read( offset );
- case DATA_CHANNEL_6_BASE: return dataChannel[ 6 ]->read( offset );
- case HARDWARE_TASK_0_BASE: return task[ 0 ]->read( offset );
- case HARDWARE_TASK_1_BASE: return task[ 1 ]->read( offset );
- case HARDWARE_TASK_2_BASE: return task[ 2 ]->read( offset );
- case HARDWARE_TASK_3_BASE: return task[ 3 ]->read( offset );
- case HARDWARE_TASK_4_BASE: return task[ 4 ]->read( offset );
- case HARDWARE_TASK_5_BASE: return task[ 5 ]->read( offset );
- case HARDWARE_TASK_6_BASE: return task[ 6 ]->read( offset );
- default: return -1;
- };
- }
-
- Hardware::Hardware() {
- task.push_back( new HardwareTaskSimulation( task_sine_run ) );
- task.push_back( new HardwareTaskSimulation( task_sine_run ) );
- task.push_back( new HardwareTaskSimulation( task_rand_run ) );
- task.push_back( new HardwareTaskSimulation( task_add_run ) );
- task.push_back( new HardwareTaskSimulation( task_add_run ) );
- task.push_back( new HardwareTaskSimulation( task_fft_run ) );
- task.push_back( new HardwareTaskSimulation( task_crc_run ) );
-
- for ( uint32_t i = 0; i < 7; ++i ) {
- dataChannel.push_back( new DataChannelSimulation() );
- }
- }
|