diff options
| author | Keith Packard <keithp@keithp.com> | 2014-06-02 22:05:11 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2014-06-02 22:05:11 -0700 | 
| commit | d20c608ce833fb8949dce527f92887775d216823 (patch) | |
| tree | a8fe6bc5dcb1f2a35f7b9c90fe0a20c58f1581c4 /src/kernel/ao_pyro.c | |
| parent | b7abc063fb27da29cd7a717bbea15f92882bd205 (diff) | |
altos: Fetch/store only 8 bits for pyro state values
These fields are uint8_t, not int16_t. Fetching and storing 16 bits is
a bad idea.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/kernel/ao_pyro.c')
| -rw-r--r-- | src/kernel/ao_pyro.c | 10 | 
1 files changed, 8 insertions, 2 deletions
| diff --git a/src/kernel/ao_pyro.c b/src/kernel/ao_pyro.c index 56758fa4..0ee7fbee 100644 --- a/src/kernel/ao_pyro.c +++ b/src/kernel/ao_pyro.c @@ -403,7 +403,10 @@ ao_pyro_show(void)  			if (ao_pyro_values[v].offset != NO_VALUE) {  				int16_t	value; -				value = *((int16_t *) ((char *) pyro + ao_pyro_values[v].offset)); +				if (ao_pyro_values[v].flag & AO_PYRO_8_BIT_VALUE) +					value = *((uint8_t *) ((char *) pyro + ao_pyro_values[v].offset)); +				else +					value = *((int16_t *) ((char *) pyro + ao_pyro_values[v].offset));  				printf ("%6d ", value);  			} else {  				printf ("       "); @@ -467,7 +470,10 @@ ao_pyro_set(void)  			ao_cmd_decimal();  			if (ao_cmd_status != ao_cmd_success)  				return; -			*((int16_t *) ((char *) &pyro_tmp + ao_pyro_values[v].offset)) = ao_cmd_lex_i; +			if (ao_pyro_values[v].flag & AO_PYRO_8_BIT_VALUE) +				*((uint8_t *) ((char *) &pyro_tmp + ao_pyro_values[v].offset)) = ao_cmd_lex_i; +			else +				*((int16_t *) ((char *) &pyro_tmp + ao_pyro_values[v].offset)) = ao_cmd_lex_i;  		}  	}  	_ao_config_edit_start(); | 
