lkml.org 
[lkml]   [2014]   [Jul]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 3/4] power_supply: Introduce PSE compliant algorithm
On Tue, Jul 08, 2014 at 06:07:29AM +0000, Tc, Jenny wrote:
> > > +static int get_tempzone(struct psy_pse_chrg_prof *pse_mod_bprof,
> > > + int temp)
> > > +{
> > > + int i = 0;
> > > + int temp_range_cnt;
> > > +
> > > + temp_range_cnt = min_t(u16, pse_mod_bprof->temp_mon_ranges,
> > > + BATT_TEMP_NR_RNG);
> > > + if ((temp < pse_mod_bprof->temp_low_lim) ||
> > > + (temp > pse_mod_bprof->temp_mon_range[0].temp_up_lim))
> > > + return -EINVAL;
> > > +
> > > + for (i = 0; i < temp_range_cnt; ++i)
> > > + if (temp > pse_mod_bprof->temp_mon_range[i].temp_up_lim)
> > > + break;
> > > + return i-1;
> > > +}
> >
> > pse_mod_bprof->temp_mon_ranges > BATT_TEMP_NR_RNG is not allowed, so I
> > suggest to print an error and return some error code.
> >
> min_t takes care of the upper bound. The algorithm process BATT_TEMP_NR_RNG
> even if the actual number of zones are greater than this.

Right, the function will not fail, but the zone information table is
truncated. I would expect at least warning about that. I think it
doesn't hurt to have a small function, which validates the zone
data as good as possible. Using incorrect temperature zones is a
safety thread and we should try our best to avoid exploding
batteries ;)

Maybe something like that:

static bool check_tempzones(struct psy_pse_chrg_prof *pse_mod_bprof)
{
int i = 0;
int last_temp = ;

/* check size */
if (BATT_TEMP_NR_RNG > pse_mod_bprof->temp_mon_ranges)
return false;

/* check zone order */
for (i = 0; i < pse_mod_bprof->temp_mon_ranges; i++) {
if (last_temp < pse_mod_bprof->temp_mon_range[i].temp_up_lim)
return false;
last_temp = pse_mod_bprof->temp_mon_range[i].temp_up_lim;
}

return true;
}

-- Sebastian
[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2014-07-09 09:41    [W:0.089 / U:1.416 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site