On Tue, Mar 26, 2019 at 07:42:57PM -0700, Richard Cochran wrote:
> On Tue, Mar 26, 2019 at 10:06:08PM +0000, Patel, Vedang wrote:
> > After pondering a little bit more, I think that switch/case is not suitable 
> > in this scenario. The current we switch/case is implemented is as follows:
> > 
> > switch (*state) {
> >     case SERVO_UNLOCKED:
> >             servo->curr_offset_values = servo->num_offset_values;
> >             break;
> >     case SERVO_LOCKED:
> >             if (check_offset_threshold(servo, offset)) {
> >                     *state = SERVO_LOCKED_STABLE;
> >             }
> >             /* fall through. */
> >     case SERVO_JUMP:
> >             servo->first_update = 0;
> >             break;
> >     case SERVO_LOCKED_STABLE:
> >             break;
> >     }
> > 
> > But, here SERVO_LOCKED_STABLE case will never occur.
> 
> Even if it is a noop, still enumerating the cases is clearer to me.
> You could add a comment explaining why that case is never reached.

Actually, this switch/case shouldn't make any assumptions about how
the sub-module might have set 'state'.  It might go LOCKED-JUMP-LOCKED
for example.

So you need (servo->curr_offset_values = servo->num_offset_values) in
case JUMP as well.

Also, please avoid the fall through.  Just duplicate the clearing of
servo->first_update.  The compiler will figure the optimization out.

Thanks,
Richard


_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to