{\r
{ .ParamID = PARAM_BUILD_NUMBER_LOW,\r
.ParamValue = (LUFA_VERSION_INTEGER >> 8),\r
- .ParamPrivellages = PARAM_PRIV_READ },\r
+ .ParamPrivileges = PARAM_PRIV_READ },\r
\r
{ .ParamID = PARAM_BUILD_NUMBER_HIGH,\r
.ParamValue = (LUFA_VERSION_INTEGER & 0xFF),\r
- .ParamPrivellages = PARAM_PRIV_READ },\r
+ .ParamPrivileges = PARAM_PRIV_READ },\r
\r
{ .ParamID = PARAM_HW_VER,\r
.ParamValue = 0x00,\r
- .ParamPrivellages = PARAM_PRIV_READ },\r
+ .ParamPrivileges = PARAM_PRIV_READ },\r
\r
{ .ParamID = PARAM_SW_MAJOR,\r
.ParamValue = 0x01,\r
- .ParamPrivellages = PARAM_PRIV_READ },\r
+ .ParamPrivileges = PARAM_PRIV_READ },\r
\r
{ .ParamID = PARAM_SW_MINOR,\r
.ParamValue = 0x0C,\r
- .ParamPrivellages = PARAM_PRIV_READ },\r
+ .ParamPrivileges = PARAM_PRIV_READ },\r
\r
{ .ParamID = PARAM_VTARGET,\r
.ParamValue = 0x32,\r
- .ParamPrivellages = PARAM_PRIV_READ },\r
+ .ParamPrivileges = PARAM_PRIV_READ },\r
\r
{ .ParamID = PARAM_SCK_DURATION,\r
.ParamValue = (TOTAL_PROGRAMMING_SPEEDS - 1),\r
- .ParamPrivellages = PARAM_PRIV_READ | PARAM_PRIV_WRITE },\r
+ .ParamPrivileges = PARAM_PRIV_READ | PARAM_PRIV_WRITE },\r
\r
{ .ParamID = PARAM_RESET_POLARITY,\r
.ParamValue = 0x00,\r
- .ParamPrivellages = PARAM_PRIV_WRITE },\r
+ .ParamPrivileges = PARAM_PRIV_WRITE },\r
\r
{ .ParamID = PARAM_STATUS_TGT_CONN,\r
.ParamValue = 0x00,\r
- .ParamPrivellages = PARAM_PRIV_READ },\r
+ .ParamPrivileges = PARAM_PRIV_READ },\r
\r
{ .ParamID = PARAM_DISCHARGEDELAY,\r
.ParamValue = 0x00,\r
- .ParamPrivellages = PARAM_PRIV_WRITE },\r
+ .ParamPrivileges = PARAM_PRIV_WRITE },\r
};\r
\r
\r
/** Loads saved non-volatile parameter values from the EEPROM into the parameter table, as needed. */\r
-void V2Params_LoadEEPROMParamValues(void)\r
+void V2Params_LoadNonVolatileParamValues(void)\r
{\r
- /* Target RESET line polarity is a non-volatile value, retrieve current parameter value from EEPROM */\r
+ /* Target RESET line polarity is a non-volatile value, retrieve current parameter value from EEPROM -\r
+ * NB: Cannot call V2Protocol_SetParameterValue() here, as that will cause another EEPROM write!\r
+ */\r
V2Params_GetParamFromTable(PARAM_RESET_POLARITY)->ParamValue = eeprom_read_byte(&EEPROM_Rest_Polarity);\r
}\r
\r
-/** Retrieves the host PC read/write privellages for a given parameter in the parameter table. This should\r
+/** Updates any parameter values that are sourced from hardware rather than explicitly set by the host, such as\r
+ * VTARGET levels from the ADC on supported AVR models.\r
+ */\r
+void V2Params_UpdateParamValues(void)\r
+{\r
+ #if defined(ADC)\r
+ /* Update VTARGET parameter with the latest ADC conversion of VTARGET on supported AVR models */\r
+ V2Params_GetParamFromTable(PARAM_VTARGET)->ParamValue = ((5 * 10 * ADC_GetResult()) / 1024);\r
+ #endif\r
+}\r
+\r
+/** Retrieves the host PC read/write privileges for a given parameter in the parameter table. This should\r
* be called before calls to \ref V2Params_GetParameterValue() or \ref V2Params_SetParameterValue() when\r
* getting or setting parameter values in response to requests from the host.\r
*\r
- * \param ParamID Parameter ID whose privellages are to be retrieved from the table\r
+ * \param[in] ParamID Parameter ID whose privileges are to be retrieved from the table\r
*\r
- * \return Privellages for the requested parameter, as a mask of PARAM_PRIV_* masks\r
+ * \return Privileges for the requested parameter, as a mask of PARAM_PRIV_* masks\r
*/ \r
-uint8_t V2Params_GetParameterPrivellages(uint8_t ParamID)\r
+uint8_t V2Params_GetParameterPrivileges(uint8_t ParamID)\r
{\r
ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID);\r
\r
if (ParamInfo == NULL)\r
return 0;\r
\r
- return ParamInfo->ParamPrivellages;\r
+ return ParamInfo->ParamPrivileges;\r
}\r
\r
/** Retrieves the current value for a given parameter in the parameter table.\r
*\r
- * \param ParamID Parameter ID whose value is to be retrieved from the table\r
+ * \param[in] ParamID Parameter ID whose value is to be retrieved from the table\r
*\r
* \return Current value of the parameter in the table, or 0 if not found\r
*/ \r
{\r
ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID);\r
\r
- if (ParamInfo == NULL)\r
+ if ((ParamInfo == NULL) || !(ParamInfo->ParamPrivileges & PARAM_PRIV_READ))\r
return 0;\r
\r
return ParamInfo->ParamValue;\r
\r
/** Sets the value for a given parameter in the parameter table.\r
*\r
- * \param ParamID Parameter ID whose value is to be set in the table\r
- * \param Value New value to set the parameter to\r
+ * \param[in] ParamID Parameter ID whose value is to be set in the table\r
+ * \param[in] Value New value to set the parameter to\r
*\r
* \return Pointer to the associated parameter information from the parameter table if found, NULL otherwise\r
*/\r
{\r
ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID);\r
\r
- if (ParamInfo == NULL)\r
+ if ((ParamInfo == NULL) || !(ParamInfo->ParamPrivileges & PARAM_PRIV_WRITE))\r
return;\r
\r
ParamInfo->ParamValue = Value;\r
eeprom_write_byte(&EEPROM_Rest_Polarity, Value); \r
}\r
\r
-/** Retrieves a parameter entry (including ID, value and privellages) from the parameter table that matches the given\r
+/** Retrieves a parameter entry (including ID, value and privileges) from the parameter table that matches the given\r
* parameter ID.\r
*\r
- * \param ParamID Parameter ID to find in the table\r
+ * \param[in] ParamID Parameter ID to find in the table\r
*\r
* \return Pointer to the associated parameter information from the parameter table if found, NULL otherwise\r
*/\r