[go: up one dir, main page]

File: ppb.h

package info (click to toggle)
srecord 1.58-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 5,144 kB
  • sloc: cpp: 26,774; sh: 7,053; makefile: 2,889; awk: 187; vhdl: 15
file content (142 lines) | stat: -rw-r--r-- 3,974 bytes parent folder | download | duplicates (2)
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
//
// srecord - Manipulate EPROM load files
// Copyright (C) 2011 Peter Miller
//
// This program is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation; either version 3 of the License, or (at your
// option) any later version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
// more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//

#ifndef SRECORD_INPUT_FILE_PPB_H
#define SRECORD_INPUT_FILE_PPB_H

#include <srecord/input/file.h>
#include <srecord/record.h>

namespace srecord {

/**
  * The input_file_hexdump class is used to represent the processing
  * required to read in a Stag Prom Programmer binary file.
  */
class input_file_ppb:
    public input_file
{
public:
    /**
      * The destructor.
      */
    virtual ~input_file_ppb();

    /**
      * The create class method is used to create new dynamically
      * allocated instances of this class.
      *
      * @param filename
      *     The name of the file to be read.
      */
    static pointer create(const std::string &filename);

protected:
    // See base class for documentation.
    bool read(class record &rec);

    // See base class for documentation.
    const char *get_file_format_name(void) const;

    // See base class for documentation.
    bool is_binary(void) const;

    // See base class for documentation.
    const char *format_option_name(void) const;

private:
    /**
      * The constructor.
      *
      * @param filename
      *     The name of the file to be read.
      */
    input_file_ppb(const std::string &filename);

    /**
      * The address instance variable is used to remember the current
      * address of the next data record.  This is set and advanced by
      * the #read method.
      */
    record::address_t address;

    /**
      * The data_seen instance variable is used to remember whether or
      * not any data has been seen in the file.  This is used to issue
      * an error when there is aparrently no data in the file, and this
      * helps #guess to figure out the file is notof this type.
      */
    bool data_seen;

    /**
      * The packet_address instance variable is used to remember the
      * address of the first byte in the most recetly read packet.
      */
    unsigned long packet_address;

    /**
      * The packet instance variable is used to remember the most recent
      * #packet_length data bytes read from the file in the most recent packet.
      */
    record::data_t packet[8192];

    /**
      * The packet_length instance variable is used to remember the
      * number of data bytes in the #packet array.
      */
    size_t packet_length;

    /**
      * The packet_used instance variable is used to remember how many
      * bytes of the most recently read packect have been consumed.
      */
    size_t packet_used;

    /**
      * The get_packet method is used to read another packet, setting
      * the #packet and #packet_length and #packet_address and
      * #packet_used instance variables.
      */
    bool get_packet(void);

    /**
      * The packet_format_error method is used to issue a #fatal_error
      * message when a packet is malformed.
      */
    void packet_format_error(void);

    /**
      * The default constructor.  Do not use.
      */
    input_file_ppb();

    /**
      * The copy constructor.  Do not use.
      */
    input_file_ppb(const input_file_ppb &);

    /**
      * The assignment operator.  Do not use.
      */
    input_file_ppb &operator=(const input_file_ppb &);
};

};

// vim: set ts=8 sw=4 et :
#endif // SRECORD_INPUT_FILE_PPB_H