mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-30 01:52:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
		
			Executable File
		
	
	
	
	
| diff --git a/tools/bccmd.c b/tools/bccmd.c
 | |
| old mode 100644
 | |
| new mode 100755
 | |
| index 6bc28da..1605d1c
 | |
| --- a/tools/bccmd.c
 | |
| +++ b/tools/bccmd.c
 | |
| @@ -636,6 +636,78 @@ static int opt_pskey(int argc, char *argv[], uint16_t *stores, int *reset, int *
 | |
|  	return optind;
 | |
|  }
 | |
|  
 | |
| +int inline serialize_u32(uint8_t *array, uint32_t val32)
 | |
| +{
 | |
| +	if (NULL == array)
 | |
| +		return -1;
 | |
| +
 | |
| +	array[0] = (val32 & 0xff0000) >> 16;
 | |
| +	array[1] = val32 >> 24;
 | |
| +	array[2] = val32 & 0xff;
 | |
| +	array[3] = (val32 & 0xff00) >> 8;
 | |
| +
 | |
| +	return 0;
 | |
| +}
 | |
| +
 | |
| +int inline deserialize_u32(uint8_t *array, uint32_t *pval32)
 | |
| +{
 | |
| +	if (NULL == array || NULL == pval32)
 | |
| +		return -1;
 | |
| +
 | |
| +	*pval32 = (array[1]<<24)
 | |
| +				| (array[0]<<16)
 | |
| +				| (array[3]<<8)
 | |
| +				| array[2];
 | |
| +	return 0;
 | |
| +}
 | |
| +
 | |
| +static int setpio32(int transport, uint32_t varID, uint32_t mask, uint32_t bits)
 | |
| +{
 | |
| +	uint8_t array[32];
 | |
| +	uint8_t *ptr = NULL;
 | |
| +	uint32_t result = 0;
 | |
| +	int err;
 | |
| +
 | |
| +	memset(array, 0, sizeof(array));
 | |
| +	ptr = array;
 | |
| +
 | |
| +	serialize_u32(ptr, mask);
 | |
| +	ptr += 4;
 | |
| +
 | |
| +	serialize_u32(ptr, bits);
 | |
| +
 | |
| +	err = transport_write(transport, varID, array, 12);
 | |
| +	if (err < 0)
 | |
| +		return err;
 | |
| +
 | |
| +	deserialize_u32(&array[8], &result);
 | |
| +	printf("result: 0x%x\n", result);
 | |
| +
 | |
| +	return 0;
 | |
| +
 | |
| +}
 | |
| +
 | |
| +
 | |
| +static int cmd_pio32set(int transport, int argc, char *argv[])
 | |
| +{
 | |
| +	uint32_t varID;
 | |
| +	uint32_t mask;
 | |
| +	uint32_t bits;
 | |
| +
 | |
| +	argc--;
 | |
| +	argv++;
 | |
| +
 | |
| +	if (3 != argc)
 | |
| +		return -1;
 | |
| +
 | |
| +	varID = strtol(argv[0] + 2, NULL, 16);
 | |
| +	mask = strtol(argv[1] + 2, NULL, 16);
 | |
| +	bits = strtol(argv[2] + 2, NULL, 16);
 | |
| +
 | |
| +	return setpio32(transport, varID, mask, bits);
 | |
| +}
 | |
| +
 | |
| +
 | |
|  #define OPT_PSKEY(min, max, stores, reset, help) \
 | |
|  		opt_pskey(argc, argv, (stores), (reset), (help)); \
 | |
|  		argc -= optind; argv += optind; optind = 0; \
 | |
| @@ -1112,6 +1184,7 @@ static struct {
 | |
|  	{ "psread",    cmd_psread,    NULL,                  "Read all PS keys"               },
 | |
|  	{ "psload",    cmd_psload,    "<file>",              "Load all PS keys from PSR file" },
 | |
|  	{ "pscheck",   cmd_pscheck,   "<file>",              "Check PSR file"                 },
 | |
| +	{ "pio32set",  cmd_pio32set,  "<VarID> <mask> <bits>","Set value for PIO32 register"   },
 | |
|  	{ "adc",       cmd_adc,       "<mux>",               "Read ADC value of <mux> input"  },
 | |
|  	{ NULL }
 | |
|  };
 | 
