Example #1
0
int emmc_write(char *side, char **value)
{
	int fd, i;
	char buf[MACADDR_LEN];
	long long size, start_addr;

	fd = open(EMMC_PARTITION, O_RDWR | O_SYNC);
	if(fd < 0) {
		fprintf(stderr, "Could not open emmc device: %s\n", EMMC_PARTITION);
		exit(1);
		return -1;
	}
	if (get_start_address(&size, &start_addr) < 0) {
		close(fd);
		exit(1);
	}
	if (WAN_OFFSET+MACADDR_LEN >= size) {
		fprintf(stderr, "exceed than the maximum size: %llx\n", size);
		close(fd);
		exit(1);
	}
		lseek(fd, start_addr+keyfromstring(side), SEEK_SET);
	for (i = 0; i < MACADDR_LEN; i++)
		buf[i] = strtol(value[i], NULL, 16);
	if (write(fd, buf, MACADDR_LEN) != MACADDR_LEN) {
		fprintf(stderr, "write() %s failed\n", EMMC_PARTITION);
		close(fd);
		return -1;
	}
	close(fd);
	return 0;
}
Example #2
0
int emmc_read(char *side)
{
	int fd, pos_emmc, pos_file, i;
	char mac_addr[MACADDR_LEN];
	long long size, start_addr;

	fd = open(EMMC_PARTITION, O_RDWR | O_SYNC);
	if(fd < 0) {
		fprintf(stderr, "Could not open emmc device: %s\n", EMMC_PARTITION);
		exit(1);
		return -1;
	}
	if (get_start_address(&size, &start_addr) < 0) {
		close(fd);
		exit(1);
	}
		lseek(fd, start_addr+keyfromstring(side), SEEK_SET);
	if(read(fd, mac_addr, MACADDR_LEN) != MACADDR_LEN){
		printf("read() failed\n");
		close(fd);
		return -1;
	}
	for (i = 0; i < MACADDR_LEN; i++)
	{
		printf("%02X", mac_addr[i]);
		if (i < MACADDR_LEN-1)
			printf(":");
		else
			printf("\n");
	}
	close(fd);

	return 0;
}
Example #3
0
int mtd_read(char *side)
{
	int fd = mtd_open(MTD_FACTORY, O_RDWR | O_SYNC);
	int i = 0;
	unsigned char mac_addr[MACADDR_LEN];

	if(fd < 0) {
		printf("Could not open mtd device: %s\n", MTD_FACTORY);
		return -1;
	}

		lseek(fd, keyfromstring(side), SEEK_SET);
	if(read(fd, mac_addr, MACADDR_LEN) != MACADDR_LEN){
		printf("read() failed\n");
		close(fd);
		return -1;
	}
	for (i = 0; i < MACADDR_LEN; i++)
	{
		printf("%02X", mac_addr[i]);
		if (i < MACADDR_LEN-1)
			printf(":");
		else
			printf("\n");
	}
	close(fd);

	return 0;
}
Example #4
0
int mtd_write(char *side, char **value)
{
	int sz = 0;
	int i;
	struct mtd_info_user mtdInfo;
	struct erase_info_user mtdEraseInfo;
	int fd = mtd_open(MTD_FACTORY, O_RDWR | O_SYNC);
	unsigned char *buf, *ptr;

	if(fd < 0) {
		fprintf(stderr, "Could not open mtd device: %s\n", MTD_FACTORY);
		return -1;
	}
	if(ioctl(fd, MEMGETINFO, &mtdInfo)) {
		fprintf(stderr, "Could not get MTD device info from %s\n", MTD_FACTORY);
		close(fd);
		return -1;
	}
	mtdEraseInfo.length = sz = mtdInfo.erasesize;
	buf = (unsigned char *)malloc(sz);
	if(NULL == buf){
		printf("Allocate memory for sz failed.\n");
		close(fd);
		return -1;        
	}
	if(read(fd, buf, sz) != sz){
		fprintf(stderr, "read() %s failed\n", MTD_FACTORY);
		goto write_fail;
	}
	mtdEraseInfo.start = 0x0;
	for (mtdEraseInfo.start; mtdEraseInfo.start < mtdInfo.size; mtdEraseInfo.start += mtdInfo.erasesize) {
		ioctl(fd, MEMUNLOCK, &mtdEraseInfo);
		if(ioctl(fd, MEMERASE, &mtdEraseInfo)){
			fprintf(stderr, "Failed to erase block on %s at 0x%x\n", MTD_FACTORY, mtdEraseInfo.start);
			goto write_fail;
		}
	}		

		ptr = buf + keyfromstring(side);

	for (i = 0; i < MACADDR_LEN; i++, ptr++)
		*ptr = strtoul(value[i], NULL, 16);
	lseek(fd, 0, SEEK_SET);
	if (write(fd, buf, sz) != sz) {
		fprintf(stderr, "write() %s failed\n", MTD_FACTORY);
		goto write_fail;
	}

	close(fd);
        free(buf);
	return 0;
write_fail:
	close(fd);
	free(buf);
	return -1;
}
Example #5
0
void
parseCMD(int *clntSocket, char *buffer)
{
  mxml_node_t *tree;
  printf("The xml was: %s\n", (char *) buffer);
  tree = mxmlLoadString(NULL, buffer, MXML_NO_CALLBACK);

  mxml_node_t *node = mxmlFindElement(tree, tree, "cmd", NULL, NULL,
      MXML_DESCEND);
  mxml_node_t *n_node = mxmlFindElement(node, tree, "name", NULL, NULL,
      MXML_DESCEND);
  mxml_node_t *arg1_node = mxmlFindElement(node, tree, "arg1", NULL, NULL,
      MXML_DESCEND);
  char * cmd = mxmlGetText(n_node, 0);
  char * arg = mxmlGetText(arg1_node, 0);
  printf("The cmd was: %s and has argument: %s\n", cmd, arg);
int key = keyfromstring(cmd);

  switch (key)
    {
  case PULL: /* ... */
    downloadFileCMD();
    break;
  case PUSH: /* ... */
    break;
  case MSG: /* ... */
    break;
  case QUIT: /* ... */
    break;
  default:
    printf("The cmd was %s", (char *)cmd);
    break;
    }

  //char *newMsg = "";
  //send(*clntSocket, newMsg, strlen(newMsg), 0);
}