X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/071e02c6b6b4837fa9cf0b6d4c749994e02638d7..55d7e1e65bccd6b4c44802cf971f39eb05e6e57a:/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c?ds=sidebyside diff --git a/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c b/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c index b8c5930a0..bc3ed18e0 100644 --- a/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c +++ b/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c @@ -44,11 +44,11 @@ static ParameterItem_t ParameterTable[] = { { .ParamID = PARAM_BUILD_NUMBER_LOW, .ParamPrivileges = PARAM_PRIV_READ, - .ParamValue = (LUFA_VERSION_INTEGER >> 8) }, + .ParamValue = 0 }, { .ParamID = PARAM_BUILD_NUMBER_HIGH, .ParamPrivileges = PARAM_PRIV_READ, - .ParamValue = (LUFA_VERSION_INTEGER & 0xFF), }, + .ParamValue = 0 }, { .ParamID = PARAM_HW_VER, .ParamPrivileges = PARAM_PRIV_READ, @@ -87,8 +87,7 @@ static ParameterItem_t ParameterTable[] = /** Loads saved non-volatile parameter values from the EEPROM into the parameter table, as needed. */ void V2Params_LoadNonVolatileParamValues(void) { - /* Target RESET line polarity is a non-volatile value, retrieve current parameter value from EEPROM - - * NB: Cannot call V2Protocol_SetParameterValue() here, as that will cause another EEPROM write! */ + /* Target RESET line polarity is a non-volatile value, retrieve current parameter value from EEPROM */ V2Params_GetParamFromTable(PARAM_RESET_POLARITY)->ParamValue = eeprom_read_byte(&EEPROM_Rest_Polarity); } @@ -99,7 +98,7 @@ void V2Params_UpdateParamValues(void) { #if (defined(ADC) && !defined(NO_VTARGET_DETECT)) /* Update VTARGET parameter with the latest ADC conversion of VTARGET on supported AVR models */ - V2Params_GetParamFromTable(PARAM_VTARGET)->ParamValue = ((5 * 10 * ADC_GetResult()) / 1024); + V2Params_GetParamFromTable(PARAM_VTARGET)->ParamValue = (((uint16_t)(VTARGET_REF_VOLTS * 10 * VTARGET_SCALE_FACTOR) * ADC_GetResult()) / 1024); #endif } @@ -123,6 +122,10 @@ uint8_t V2Params_GetParameterPrivileges(const uint8_t ParamID) /** Retrieves the current value for a given parameter in the parameter table. * + * \note This function does not first check for read privileges - if the value is being sent to the host via a + * GET PARAM command, \ref V2Params_GetParameterPrivileges() should be called first to ensure that the + * parameter is host-readable. + * * \param[in] ParamID Parameter ID whose value is to be retrieved from the table * * \return Current value of the parameter in the table, or 0 if not found @@ -139,6 +142,10 @@ uint8_t V2Params_GetParameterValue(const uint8_t ParamID) /** Sets the value for a given parameter in the parameter table. * + * \note This function does not first check for write privileges - if the value is being sourced from the host + * via a SET PARAM command, \ref V2Params_GetParameterPrivileges() should be called first to ensure that the + * parameter is host-writable. + * * \param[in] ParamID Parameter ID whose value is to be set in the table * \param[in] Value New value to set the parameter to * @@ -155,7 +162,7 @@ void V2Params_SetParameterValue(const uint8_t ParamID, const uint8_t Value) /* The target RESET line polarity is a non-volatile parameter, save to EEPROM when changed */ if (ParamID == PARAM_RESET_POLARITY) - eeprom_write_byte(&EEPROM_Rest_Polarity, Value); + eeprom_update_byte(&EEPROM_Rest_Polarity, Value); } /** Retrieves a parameter entry (including ID, value and privileges) from the parameter table that matches the given