On 12 March 2018 at 13:03, Philippe Mathieu-Daudé <f4...@amsat.org> wrote:
> On 03/09/2018 06:03 PM, Peter Maydell wrote:
>> I think the spec says that if the guest makes an invalid selection
>> for one function in the group then we must ignore all the set values,
> ... for the current group? ...
>> not just the one that was wrong, so we need to check everything
>> first before we start writing the new values back.
> I'm following the "Physical Layer Simplified Specification Version 3.01".
> 126.96.36.199 Mode 1 Operation - Set Function
> Switching to a new functionality is done by:
> • When a function cannot be switched because it is busy,
> the card returns the current function number (not returns 0xF),
> the other functions in the other groups may still be switched.
> In response to a set function, the switch function will return ...
> • The function that is the result of the switch command. In case
> of invalid selection of one function or more, all set values
> are ignored and no change will be done (identical to the case
> where the host selects 0xF for all functions groups). The
> response to an invalid selection of function will be 0xF.
> I'm not sure how to interpret this paragraph, I understand it as:
> "all set values are ignored [in the current group]" but this is
> confusing because of the "identical to ... all functions groups".
The command only lets you specify one value function in each
group, so "all set values" must mean "the set values for every
group", I think, and the parenthesised text confirms that --
it should act as if the command specified 0xf for everything.
It's slightly less clear what exactly the response should be:
should it return 0xf for the groups where there was an invalid
selection, and <whatever the current value is> for the groups
where the selection request was ok, or just 0xf for everything ?
(This is probably most easily answered by testing the behaviour
of a real sd card I guess...)