/* AVR8 Burn-O-Mat Copyright (C) 2007 Torsten Brischalle This program is free software: you can redistribute it and/or modify it under the terms of the GNU 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 General Public License along with this program. If not, see <http://www.gnu.org/licenses/ */ package avr8_burn_o_mat; import de.lazyzero.kkMulticopterFlashTool.KKMulticopterFlashTool; public class AVR { public static final int LOWER_NIBBLE = 0; public static final int HIGHER_NIBBLE = 1; public static final String HFUSE = "hfuse"; public static final String LFUSE = "lfuse"; public static final String EFUSE = "efuse"; private String lfuse; private String hfuse; private String efuse; private String m_name; private String m_caption; private String desc; private int eepromSize; private String hfuseMask; private String lfuseMask; private int bootloaderAddress = 1024; /** Creates a new instance of AVR */ public AVR() { } public AVR(String name, String caption) { m_name = name; m_caption = caption; } public AVR(String name, String desc, String caption, int eepromSize, String lfuse, String hfuse) { this(name, desc, caption, eepromSize, lfuse, hfuse, null); } public AVR(String name, String desc, String caption, int eepromSize, String lfuse, String hfuse, String efuse) { m_name = name; m_caption = caption; this.desc = desc; this.lfuse = lfuse; this.hfuse = hfuse; this.setEfuse(efuse); this.eepromSize = eepromSize; } public AVR(String name, String desc, String caption, int eepromSize, String lfuse, String hfuse, int bootloaderAddress) { m_name = name; m_caption = caption; this.desc = desc; this.lfuse = lfuse; this.hfuse = hfuse; this.eepromSize = eepromSize; this.bootloaderAddress = bootloaderAddress; } public String getDescription() { return desc; } @Override public String toString() { String name = this.getName() + (null!=this.getDescription()?" (" + this.getDescription() + ")":""); return name; } public String getName() { return m_name; } public String getCaption() { return m_caption; } public String getCaptionAliasFree() { if (m_caption.equals(KKMulticopterFlashTool.KKPLUSBOOT)) { return "m168p"; } else if (m_caption.equals(KKMulticopterFlashTool.FLYCAM_BLACKBOARD_P)) { return "m168p"; } else if (m_caption.equals(KKMulticopterFlashTool.FLYCAM_BLACKBOARD)) { return "m168"; } else if (m_caption.equals(KKMulticopterFlashTool.ESC)) { return "m8"; } else if (m_caption.equals(KKMulticopterFlashTool.WIIESC)) { return "m8"; } else if (m_caption.equals(KKMulticopterFlashTool.WIIESC_EEPROM)) { return "m8"; } else if (m_caption.equals(KKMulticopterFlashTool.WIIESC_BOOTLOADER)) { return "m8"; } else if (m_caption.equals(KKMulticopterFlashTool.ESCBOOTLOADER)) { return "m8"; } else if (m_caption.equals(KKMulticopterFlashTool.ESC_LIGHT)) { return "m8"; } else if (m_caption.equals(KKMulticopterFlashTool.SMARTLCD)) { return "m48p"; } else if (m_caption.equals(KKMulticopterFlashTool.i86)) { return "m168p"; } else if (m_caption.equals(KKMulticopterFlashTool.i86l)) { return "m168p"; } else if (m_caption.equals(KKMulticopterFlashTool.OPENFLIGHT_V1)) { return "m168p"; } else if (m_caption.equals(KKMulticopterFlashTool.OPENFLIGHT_V2)) { return "m168p"; } else if (m_caption.equals(KKMulticopterFlashTool.OPENFLIGHT_V2_SM)) { return "m168p"; } else if (m_caption.equals(KKMulticopterFlashTool.OPENFLIGHTPROG)) { return "m8"; } return m_caption; } /** * @return the lfuse */ public String getLfuse() { return lfuse; } /** * @param lfuse the lfuse to set */ public void setLfuse(String lfuse) { this.lfuse = lfuse; } /** * @return the hfuse */ public String getHfuse() { return hfuse; } /** * @param hfuse the hfuse to set */ public void setHfuse(String hfuse) { this.hfuse = hfuse; } public int getEepromSize() { return eepromSize; } public void setEepromSize(int eepromSize) { this.eepromSize = eepromSize; } public int getBootloaderAddress() { return bootloaderAddress; } public void setBootloaderAddress(int bootloaderAddress) { this.bootloaderAddress = bootloaderAddress; } public void changeFuseNibble(String fuse, int nibble, String exchangeBy) { String value = ""; if (fuse.equals(HFUSE)) { value = getHfuse(); } else if (fuse.equals(LFUSE)) { value = getLfuse(); } String fuseAsString = Integer.toHexString(Integer.parseInt(value)); if (nibble == LOWER_NIBBLE) { fuseAsString = fuseAsString.substring(0, 1).concat(exchangeBy); } else { fuseAsString = exchangeBy.concat(fuseAsString.substring(1)); } if (fuse.equals(HFUSE)) { setHfuse(Integer.parseInt(fuseAsString, 16)+""); } else if (fuse.equals(LFUSE)) { setLfuse(Integer.parseInt(fuseAsString, 16)+""); } } public String getEfuse() { return efuse; } public void setEfuse(String efuse) { this.efuse = efuse; } }