/** Loads saved non-volatile parameter values from the EEPROM into the parameter table, as needed. */ void V2Params_LoadNonVolatileParamValues(void) { /* Read parameter values that are stored in non-volatile EEPROM */ uint8_t ResetPolarity = eeprom_read_byte(&EEPROM_Reset_Polarity); uint8_t SCKDuration = eeprom_read_byte(&EEPROM_SCK_Duration); /* Update current parameter table if the EEPROM contents was not blank */ if (ResetPolarity != 0xFF) V2Params_GetParamFromTable(PARAM_RESET_POLARITY)->ParamValue = ResetPolarity; /* Update current parameter table if the EEPROM contents was not blank */ if (SCKDuration != 0xFF) V2Params_GetParamFromTable(PARAM_SCK_DURATION)->ParamValue = SCKDuration; }
/** Updates any parameter values that are sourced from hardware rather than explicitly set by the host, such as * VTARGET levels from the ADC on supported AVR models. */ 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 = (((uint16_t)(VTARGET_REF_VOLTS * 10 * VTARGET_SCALE_FACTOR) * ADC_GetResult()) / 1024); #endif }
/** Updates any parameter values that are sourced from hardware rather than explicitly set by the host, such as * VTARGET levels from the ADC on supported AVR models. */ void V2Params_UpdateParamValues(void) { #if defined(ADC) /* Update VTARGET parameter with the latest ADC conversion of VTARGET on supported AVR models */ V2Params_GetParamFromTable(PARAM_VTARGET)->ParamValue = ((5 * 10 * ADC_GetResult()) / 1024); #endif }
/** 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 */ uint8_t V2Params_GetParameterValue(const uint8_t ParamID) { ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID); if (ParamInfo == NULL) return 0; return ParamInfo->ParamValue; }
/** Retrieves the host PC read/write privileges for a given parameter in the parameter table. This should * be called before calls to \ref V2Params_GetParameterValue() or \ref V2Params_SetParameterValue() when * getting or setting parameter values in response to requests from the host. * * \param[in] ParamID Parameter ID whose privileges are to be retrieved from the table * * \return Privileges for the requested parameter, as a mask of \c PARAM_PRIV_* masks */ uint8_t V2Params_GetParameterPrivileges(const uint8_t ParamID) { ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID); if (ParamInfo == NULL) return 0; return ParamInfo->ParamPrivileges; }
/** Sets the value for a given parameter in the parameter table. * * \param[in] ParamID Parameter ID whose value is to be set in the table * \param[in] Value New value to set the parameter to * * \return Pointer to the associated parameter information from the parameter table if found, NULL otherwise */ void V2Params_SetParameterValue(const uint8_t ParamID, const uint8_t Value) { ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID); if (ParamInfo == NULL) return; ParamInfo->ParamValue = 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); }
/** 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 */ V2Params_GetParamFromTable(PARAM_RESET_POLARITY)->ParamValue = eeprom_read_byte(&EEPROM_Reset_Polarity); }
/** 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! */ V2Params_GetParamFromTable(PARAM_RESET_POLARITY)->ParamValue = eeprom_read_byte(&EEPROM_Rest_Polarity); }