Ok !

I created a pseudo sysfs for testing:
ls -R ~/sys :
sys:
bus

sys/bus:
i2c

sys/bus/i2c:
drivers

sys/bus/i2c/drivers:
apds990x bma150 bmp085 cma3000_accl eeprom hmc5843 mpu3050_gyro tsl2771 w83781d

sys/bus/i2c/drivers/apds990x:
0-0039

sys/bus/i2c/drivers/apds990x/0-0039:
lux0_input  power_state

sys/bus/i2c/drivers/bma150:
4-0038

sys/bus/i2c/drivers/bma150/4-0038:
delay  enable

sys/bus/i2c/drivers/bmp085:
4-0077

sys/bus/i2c/drivers/bmp085/4-0077:

sys/bus/i2c/drivers/cma3000_accl:
4-001c

sys/bus/i2c/drivers/cma3000_accl/4-001c:
delay  enable

sys/bus/i2c/drivers/eeprom:
0-0050  0-0051  0-0052

sys/bus/i2c/drivers/eeprom/0-0050:

sys/bus/i2c/drivers/eeprom/0-0051:

sys/bus/i2c/drivers/eeprom/0-0052:

sys/bus/i2c/drivers/hmc5843:
4-001e

sys/bus/i2c/drivers/hmc5843/4-001e:
enable  rate

sys/bus/i2c/drivers/mpu3050_gyro:
4-0068

sys/bus/i2c/drivers/mpu3050_gyro/4-0068:

sys/bus/i2c/drivers/tsl2771:
4-0039

sys/bus/i2c/drivers/tsl2771/4-0039:
als_enable  prox_enable

sys/bus/i2c/drivers/w83781d:
0-002d  0-0048  0-0049

sys/bus/i2c/drivers/w83781d/0-002d:

sys/bus/i2c/drivers/w83781d/0-0048:

can you try this patch in a real sysfs ?


/*
 * lsi2c implementation for busybox
 *
 * Copyright (C) 2013 Alison Chaiken [email protected]
 *
 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
 */

//usage:#define lsi2c_trivial_usage NOUSAGE_STR
//usage:#define lsi2c_full_usage ""

#include "libbb.h"

static int FAST_FUNC dirAction(const char *instring,
			       struct stat *statbuf UNUSED_PARAM,
			       void *userData UNUSED_PARAM, int depth)
{
	const char *sysfs_node, *drivername;
	char *address;

	if (depth != 2)
		return TRUE;

	sysfs_node = bb_basename(instring);
	if (!isdigit(sysfs_node[0]))
		return TRUE;

	drivername = bb_basename(dirname((char *)instring));
	address = strchr(sysfs_node, '-');

	if (*address++)
		printf("Controller %c for driver %s at address 0x%s.\n", *sysfs_node, drivername, address);

	return TRUE;
}

int lsi2c_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int lsi2c_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
{
	const char *fileName = "/sys/bus/i2c/drivers";

	recursive_action(fileName,
				ACTION_RECURSE,
				NULL,      /* fileAction */
				dirAction,
				NULL, /* userData */
				0 /* depth */);

	return EXIT_SUCCESS;
}
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to