#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
#include <devctl.h>
#include <fcntl.h> 
#include <inttypes.h>
#include <errno.h>
#include "dcmd_f3s.h"


int main(int argc, char **argv)
{
	int i, fd, len, chip, ret;
	unsigned char buf[4096];
        char *path1 = argv[1];

        fd = open(path1, O_RDWR, S_IRUSR | S_IWUSR);
        if (fd == -1) {
                perror("open failed");
                exit(1);
        }
	if (argc < 4) {
		fprintf(stderr,"usage: readssr /dev/fs0 size chip");
		return -1;
	}
	len = atoi(argv[2]);
	chip = atoi(argv[3]);
	fprintf(stderr, "writessr: write ssr to chip[%d], len %d bytes \n", chip, len);

	memset(buf, 0xFC, len);
	for (i=0;i<len;i++)
		fprintf(stderr, "buf[%d] %x \n", i, buf[i]);

	//FIXME: move to targeted chip
	lseek(fd, chip * 0x8000000, SEEK_SET);

	ret = devctl(fd, DCMD_F3S_WRITESSR, buf, len, NULL);
	if (ret != EOK) {
		fprintf(stderr, "devctl failed to write secsi %d\n", ret);
		return -1;
	} else {
		fprintf(stderr, "devctl OK %d, errno %d \n", ret, errno);
	}

	close(fd);
	return 0;
}
