File: PromFx2Io.h

package info (click to toggle)
libapogee3 3.2%2B20221221183454-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 9,284 kB
  • sloc: cpp: 26,737; sh: 8; makefile: 3
file content (74 lines) | stat: -rw-r--r-- 2,170 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*! 
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright(c) 2012 Apogee Imaging Systems, Inc. 
* \class PromFx2Io 
* \brief helper class for downloading the fx2 romloader and device firmware into the proms 
* 
*/ 


#ifndef PROMFX2IO_INCLUDE_H__ 
#define PROMFX2IO_INCLUDE_H__ 

#include "CamHelpers.h" 

#include <string>
#include <vector>

#include <memory>

#include <stdint.h>

class IUsb;

class PromFx2Io 
{ 
    public: 
        PromFx2Io( std::shared_ptr<IUsb> & usb,
            uint32_t MaxBlocks, uint32_t MaxBanks );
        virtual ~PromFx2Io(); 

        void FirmwareDownload(const std::vector<UsbFrmwr::IntelHexRec> & Records);
 
        void WriteFile2Eeprom(const std::string & filename, uint8_t StartBank, 
            uint8_t StartBlock, uint16_t StartAddr, uint32_t & NumBytesWritten);
 
        void BufferWriteEeprom(uint8_t StartBank, uint8_t StartBlock,
            uint16_t StartAddr, const std::vector<uint8_t> & Buffer );

        void BufferReadEeprom(uint8_t StartBank, uint8_t StartBlock,
            uint16_t StartAddr, std::vector<uint8_t> & Buffer );
       
         void WriteEepromHdr( const Eeprom::Header & hdr,
            uint8_t StartBank, uint8_t StartBlock,
            uint16_t StartAddr);

        void ReadEepromHdr( Eeprom::Header & hdr,
            uint8_t StartBank, uint8_t StartBlock,
            uint16_t StartAddr);

        std::vector<uint8_t> ReadFirmwareFile( const std::string & filename );

    private:
        
        void IncrEepromAddrBlockBank(uint16_t IncrSize,
            uint16_t & Addr, uint8_t & Bank, uint8_t & Block);

        void WriteEeprom(uint16_t Addr,
            uint8_t Bank, uint8_t Block,
            const uint8_t * data, uint32_t DataSzInBytes);

        void ReadEeprom(uint16_t Addr,
            uint8_t Bank, uint8_t Block,
            uint8_t * data, uint32_t DataSzInBytes);

        std::shared_ptr<IUsb> m_Usb; 
        uint32_t m_MaxBlocks;
        uint32_t m_MaxBanks;
        std::string m_fileName;
}; 

#endif