// Path: mokka7-core/src/main/java/org/comtel2000/mokka7/type/AreaType.java
// public enum AreaType {
//     /** System Information (caller) */
//     SYS_INFO(0x03),
// 
//     /** S7 counters */
//     SYSTEM_FLAGS(0x05),
// 
//     /** Analog Inputs - System info (200 family) */
//     ANALOG_INPUTS(0x06),
// 
//     /** Analog Outputs - System flags (200 family) */
//     ANALOG_OUTPUTS(0x07),
// 
//     /** Analog Counter Input area (200 family) */
//     CT_INPUTS(0x1C),
// 
//     /** S7 Timer area */
//     TM(0x1D),
// 
//     /** Analog Counter Output area (200 family) */
//     CT_OUTPUTS(0x1E),
// 
//     /** IEC counters (200 family) */
//     TM_IEC(0x1F),
// 
//     /** PE (inputs) instance area */
//     PE(0x81),
// 
//     /** PA (outputs) instance area */
//     PA(0x82),
// 
//     /** Marker (flags) area */
//     MK(0x83),
// 
//     /** DataBlock (Peripheral I/O) area */
//     DB(0x84),
// 
//     /** DataBlock area */
//     DI(0x85),
// 
//     /** DataBlock (local) area */
//     DB_LOCAL(0x86),
// 
//     /** IEC timers (200 family) */
//     TM_V(0x87);
// 
//     private final byte value;
// 
//     AreaType(int value) {
//         this.value = (byte) value;
//     }
// 
//     public byte getValue() {
//         return value;
//     }
// 
//     public final static List<AreaType> SUPPORTED = Arrays.asList(MK, DB, TM);
// 
// }
// 
// Path: mokka7-core/src/main/java/org/comtel2000/mokka7/type/DataType.java
// public enum DataType {
// 
//     /** Bit, Boolean */
//     BIT(0x01),
// 
//     /** Unsigned Byte */
//     BYTE(0x02),
// 
//     /** Unsigned Byte,Char */
//     CHAR(0x03),
// 
//     /** Unsigned Word, Short, BCD */
//     WORD(0x04),
// 
//     /** Signed Word, Short, BCD */
//     INT(0x05),
// 
//     /** Unsigned Double Word, Long, LBCD, Float */
//     DWORD(0x06),
// 
//     /** Signed Double Word, Long, LBCD, Float */
//     DINT(0x07),
// 
//     /** Float */
//     REAL(0x08),
// 
//     /** Counter type */
//     COUNTER(0x1C),
// 
//     /** Timer type */
//     TIMER(0x1D);
// 
//     private final byte value;
// 
//     DataType(int value) {
//         this.value = (byte) value;
//     }
// 
//     public byte getValue() {
//         return value;
//     }
// 
//     /**
//      * Type to byte length
//      *
//      * @param type DataType
//      * @return encoded byte[] length
//      */
//     public static int getByteLength(DataType type) {
//         switch (type) {
//             case BIT:// S7 sends 1 byte per bit
//             case BYTE:
//             case CHAR:
//                 return 1;
//             case WORD:
//             case INT:
//             case COUNTER:
//             case TIMER:
//                 return 2;
//             case DWORD:
//             case DINT:
//             case REAL:
//                 return 4;
//             default:
//                 return 0;
//         }
//     }
// }


import org.comtel2000.mokka7.type.AreaType;
import org.comtel2000.mokka7.type.DataType;
package org.comtel2000.mokka7.block;


public class DataItem {

    public AreaType area;
    public DataType type;
    public int db;
    public int start;
    public int bitPos;

    public DataItem(AreaType area, DataType type, int db, int start) {
        this(area, type, db, start, 0);
    }

    public DataItem(AreaType area, DataType type, int db, int start, int bitPos) {
        this.area = area;
        this.type = type;
        this.db = db;
        this.start = start;
        this.bitPos = bitPos;
    }

    @Override
    public String toString() {
// Path: mokka7-core/src/main/java/org/comtel2000/mokka7/type/AreaType.java
// public enum AreaType {
//     /** System Information (caller) */
//     SYS_INFO(0x03),
// 
//     /** S7 counters */
//     SYSTEM_FLAGS(0x05),
// 
//     /** Analog Inputs - System info (200 family) */
//     ANALOG_INPUTS(0x06),
// 
//     /** Analog Outputs - System flags (200 family) */
//     ANALOG_OUTPUTS(0x07),
// 
//     /** Analog Counter Input area (200 family) */
//     CT_INPUTS(0x1C),
// 
//     /** S7 Timer area */
//     TM(0x1D),
// 
//     /** Analog Counter Output area (200 family) */
//     CT_OUTPUTS(0x1E),
// 
//     /** IEC counters (200 family) */
//     TM_IEC(0x1F),
// 
//     /** PE (inputs) instance area */
//     PE(0x81),
// 
//     /** PA (outputs) instance area */
//     PA(0x82),
// 
//     /** Marker (flags) area */
//     MK(0x83),
// 
//     /** DataBlock (Peripheral I/O) area */
//     DB(0x84),
// 
//     /** DataBlock area */
//     DI(0x85),
// 
//     /** DataBlock (local) area */
//     DB_LOCAL(0x86),
// 
//     /** IEC timers (200 family) */
//     TM_V(0x87);
// 
//     private final byte value;
// 
//     AreaType(int value) {
//         this.value = (byte) value;
//     }
// 
//     public byte getValue() {
//         return value;
//     }
// 
//     public final static List<AreaType> SUPPORTED = Arrays.asList(MK, DB, TM);
// 
// }
// 
// Path: mokka7-core/src/main/java/org/comtel2000/mokka7/type/DataType.java
// public enum DataType {
// 
//     /** Bit, Boolean */
//     BIT(0x01),
// 
//     /** Unsigned Byte */
//     BYTE(0x02),
// 
//     /** Unsigned Byte,Char */
//     CHAR(0x03),
// 
//     /** Unsigned Word, Short, BCD */
//     WORD(0x04),
// 
//     /** Signed Word, Short, BCD */
//     INT(0x05),
// 
//     /** Unsigned Double Word, Long, LBCD, Float */
//     DWORD(0x06),
// 
//     /** Signed Double Word, Long, LBCD, Float */
//     DINT(0x07),
// 
//     /** Float */
//     REAL(0x08),
// 
//     /** Counter type */
//     COUNTER(0x1C),
// 
//     /** Timer type */
//     TIMER(0x1D);
// 
//     private final byte value;
// 
//     DataType(int value) {
//         this.value = (byte) value;
//     }
// 
//     public byte getValue() {
//         return value;
//     }
// 
//     /**
//      * Type to byte length
//      *
//      * @param type DataType
//      * @return encoded byte[] length
//      */
//     public static int getByteLength(DataType type) {
//         switch (type) {
//             case BIT:// S7 sends 1 byte per bit
//             case BYTE:
//             case CHAR:
//                 return 1;
//             case WORD:
//             case INT:
//             case COUNTER:
//             case TIMER:
//                 return 2;
//             case DWORD:
//             case DINT:
//             case REAL:
//                 return 4;
//             default:
//                 return 0;
//         }
//     }
// }


// Path: mokka7-core/src/main/java/org/comtel2000/mokka7/block/DataItem.java
import org.comtel2000.mokka7.type.AreaType;
import org.comtel2000.mokka7.type.DataType;

package org.comtel2000.mokka7.block;


public class DataItem {

    public AreaType area;
    public DataType type;
    public int db;
    public int start;
    public int bitPos;

    public DataItem(AreaType area, DataType type, int db, int start) {
        this(area, type, db, start, 0);
    }

    public DataItem(AreaType area, DataType type, int db, int start, int bitPos) {
        this.area = area;
        this.type = type;
        this.db = db;
        this.start = start;
        this.bitPos = bitPos;
    }

    @Override
    public String toString() {
        return "DataItem [" + (area != null ? "area=" + area + ", " : "") + (type != null ? "type=" + type + ", " : "") + "db=" + db + ", start=" + start + "]";