blob: b09f16a98aeb023067bd493e5100ba801053f194 [file] [log] [blame]
Zane Shelley5a266612019-08-15 16:23:53 -05001
2#include <isolator/hei_isolator.hpp>
Zane Shelley61565dc2019-09-18 21:57:10 -05003#include <register/hei_hardware_register.hpp>
Zane Shelleyfc7ab192019-09-27 15:45:16 -05004#include <util/hei_flyweight.hpp>
Zane Shelley5a266612019-08-15 16:23:53 -05005
6namespace libhei
7{
8
9ReturnCode Isolator::initialize( void * i_buffer, size_t i_bufferSize,
10 bool i_forceInit )
11{
12 ReturnCode rc;
13
14 // BEGIN temporary code
15 HEI_INF( "Isolator::initialize(%p,%lu,%d)", i_buffer, i_bufferSize,
16 i_forceInit );
17 // END temporary code
18
19 return rc;
20}
21
22void Isolator::uninitialize()
23{
Zane Shelleyd0af3582019-09-19 10:48:59 -050024 // Must flush the hardware register cache before deleting any
25 // HardwareRegister objects.
26 HardwareRegister::flushAll();
27
Zane Shelley5a266612019-08-15 16:23:53 -050028 // BEGIN temporary code
29 HEI_INF( "Isolator::uninitialize()" );
30 // END temporary code
Zane Shelleyfc7ab192019-09-27 15:45:16 -050031
32 // Remove all of the isolation objects stored in the flyweights.
33 Flyweight<HardwareRegister>::getSingleton().clear();
Zane Shelley5a266612019-08-15 16:23:53 -050034}
35
Zane Shelleyb406de42019-09-09 16:10:38 -050036ReturnCode Isolator::isolate( const std::vector<Chip> & i_chipList,
37 IsolationData & o_isoData ) const
Zane Shelley5a266612019-08-15 16:23:53 -050038{
39 ReturnCode rc;
40
41 // Flush the isolation data to ensure a clean slate.
42 o_isoData.clear();
43
Zane Shelleyd0af3582019-09-19 10:48:59 -050044 // Flush the hardware register cache to avoid using stale data.
45 HardwareRegister::flushAll();
46
Zane Shelley61565dc2019-09-18 21:57:10 -050047 // Analyze active error on each chip.
Zane Shelleyb406de42019-09-09 16:10:38 -050048 for ( auto const & chip : i_chipList )
49 {
Zane Shelley61565dc2019-09-18 21:57:10 -050050 // In order to access hardware, we must tell the HardwareRegisters which
51 // chip to access.
52 HardwareRegister::setAccessor( chip );
53
54 // BEGIN temporary code
Zane Shelleyb406de42019-09-09 16:10:38 -050055 HEI_INF( "Isolator::isolate(%p,%u)", chip.getChip(),
56 chip.getType() );
Zane Shelley61565dc2019-09-18 21:57:10 -050057 // END temporary code
58
59 // Clean up the hardware accessor chip to prevent accidental hardware
60 // access.
61 HardwareRegister::clearAccessor();
Zane Shelleyb406de42019-09-09 16:10:38 -050062 }
Zane Shelley5a266612019-08-15 16:23:53 -050063
64 return rc;
65}
66
67} // end namespace libhei