001 /* 002 * Copyright (c) 2011, Willem Cazander 003 * All rights reserved. 004 * 005 * Redistribution and use in source and binary forms, with or without modification, are permitted provided 006 * that the following conditions are met: 007 * 008 * * Redistributions of source code must retain the above copyright notice, this list of conditions and the 009 * following disclaimer. 010 * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and 011 * the following disclaimer in the documentation and/or other materials provided with the distribution. 012 * 013 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 014 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 015 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 016 * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 017 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 018 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 019 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 020 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 021 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 022 */ 023 024 package org.nongnu.pulsefire.device.flash.avr; 025 026 /** 027 * Stk500v2Command lists all tokes used in stk500v2 protocol definition. 028 * 029 * @author Willem Cazander 030 */ 031 public enum Stk500v2Command implements FlashCommandToken { 032 033 MESSAGE_START (0x1B),//= ESC = 27 decimal 034 TOKEN (0x0E), 035 036 // *****************[ STK general command constants ]************************** 037 038 CMD_SIGN_ON (0x01), 039 CMD_SET_PARAMETER (0x02), 040 CMD_GET_PARAMETER (0x03), 041 CMD_SET_DEVICE_PARAMETERS (0x04), 042 CMD_OSCCAL (0x05), 043 CMD_LOAD_ADDRESS (0x06), 044 CMD_FIRMWARE_UPGRADE (0x07), 045 046 047 // *****************[ STK ISP command constants ]****************************** 048 049 CMD_ENTER_PROGMODE_ISP (0x10), 050 CMD_LEAVE_PROGMODE_ISP (0x11), 051 CMD_CHIP_ERASE_ISP (0x12), 052 CMD_PROGRAM_FLASH_ISP (0x13), 053 CMD_READ_FLASH_ISP (0x14), 054 CMD_PROGRAM_EEPROM_ISP (0x15), 055 CMD_READ_EEPROM_ISP (0x16), 056 CMD_PROGRAM_FUSE_ISP (0x17), 057 CMD_READ_FUSE_ISP (0x18), 058 CMD_PROGRAM_LOCK_ISP (0x19), 059 CMD_READ_LOCK_ISP (0x1A), 060 CMD_READ_SIGNATURE_ISP (0x1B), 061 CMD_READ_OSCCAL_ISP (0x1C), 062 CMD_SPI_MULTI (0x1D), 063 064 // *****************[ STK PP command constants ]******************************* 065 066 CMD_ENTER_PROGMODE_PP (0x20), 067 CMD_LEAVE_PROGMODE_PP (0x21), 068 CMD_CHIP_ERASE_PP (0x22), 069 CMD_PROGRAM_FLASH_PP (0x23), 070 CMD_READ_FLASH_PP (0x24), 071 CMD_PROGRAM_EEPROM_PP (0x25), 072 CMD_READ_EEPROM_PP (0x26), 073 CMD_PROGRAM_FUSE_PP (0x27), 074 CMD_READ_FUSE_PP (0x28), 075 CMD_PROGRAM_LOCK_PP (0x29), 076 CMD_READ_LOCK_PP (0x2A), 077 CMD_READ_SIGNATURE_PP (0x2B), 078 CMD_READ_OSCCAL_PP (0x2C), 079 CMD_SET_CONTROL_STACK (0x2D), 080 081 // *****************[ STK HVSP command constants ]***************************** 082 083 CMD_ENTER_PROGMODE_HVSP (0x30), 084 CMD_LEAVE_PROGMODE_HVSP (0x31), 085 CMD_CHIP_ERASE_HVSP (0x32), 086 CMD_PROGRAM_FLASH_HVSP (0x33), 087 CMD_READ_FLASH_HVSP (0x34), 088 CMD_PROGRAM_EEPROM_HVSP (0x35), 089 CMD_READ_EEPROM_HVSP (0x36), 090 CMD_PROGRAM_FUSE_HVSP (0x37), 091 CMD_READ_FUSE_HVSP (0x38), 092 CMD_PROGRAM_LOCK_HVSP (0x39), 093 CMD_READ_LOCK_HVSP (0x3A), 094 CMD_READ_SIGNATURE_HVSP (0x3B), 095 CMD_READ_OSCCAL_HVSP (0x3C), 096 097 // *****************[ STK status constants ]*************************** 098 099 // Success 100 STATUS_CMD_OK (0x00), 101 102 // Warnings 103 STATUS_CMD_TOUT (0x80), 104 STATUS_RDY_BSY_TOUT (0x81), 105 STATUS_SET_PARAM_MISSING (0x82), 106 107 // Errors 108 STATUS_CMD_FAILED (0xC0), 109 STATUS_CKSUM_ERROR (0xC1), 110 STATUS_CMD_UNKNOWN (0xC9), 111 112 // *****************[ STK parameter constants ]*************************** 113 PARAM_BUILD_NUMBER_LOW (0x80), 114 PARAM_BUILD_NUMBER_HIGH (0x81), 115 PARAM_HW_VER (0x90), 116 PARAM_SW_MAJOR (0x91), 117 PARAM_SW_MINOR (0x92), 118 PARAM_VTARGET (0x94), 119 PARAM_VADJUST (0x95), 120 PARAM_OSC_PSCALE (0x96), 121 PARAM_OSC_CMATCH (0x97), 122 PARAM_SCK_DURATION (0x98), 123 PARAM_TOPCARD_DETECT (0x9A), 124 PARAM_STATUS (0x9C), 125 PARAM_DATA (0x9D), 126 PARAM_RESET_POLARITY (0x9E), 127 PARAM_CONTROLLER_INIT (0x9F), 128 129 // *****************[ STK answer constants ]*************************** 130 131 ANSWER_CKSUM_ERROR (0xB0); 132 133 private final Integer token; 134 private Stk500v2Command(Integer token) { 135 this.token = token; 136 } 137 138 public Integer getToken() { 139 return token; 140 } 141 142 static public Stk500v2Command valueOfToken(Integer token) { 143 for (Stk500v2Command c:values()) { 144 if (c.getToken().equals(token)) { 145 return c; 146 } 147 } 148 return null; 149 } 150 }