1 /* ecc-pattern.c: generate ECC test patterns */
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <string.h>
6 #include <stdint.h>
8 #include "types.h"
9 #include "ecc/ecc.h"
11 uint8_t block[4096];
12 uint8_t ecc_value[64];
13 int block_size;
14 int ecc_size;
16 int main(int argc, const char* argv[])
17 {
18 FILE* fp;
19 int i;
20 int index;
22 block_size = eccBytesPerBlock();
23 ecc_size = eccNumBytes();
24 printf("ECC block size = %d ECC value size = %d\n", block_size, ecc_size);
25 if (block_size > sizeof(block) || ecc_size > sizeof(ecc_value) )
26 {
27 fprintf(stderr, "Error max block size = %d and max ecc value size =%d\n", sizeof(block), sizeof(ecc_value));
28 exit(2);
29 }
31 fp = fopen("ecc-pattern.bin", "wb");
32 if (fp == NULL)
33 {
34 fprintf(stderr, "can't open pattern output file");
35 exit(2);
36 }
38 /* start with all zeros */
39 memset(block, 0, block_size);
40 fwrite(block, 1, block_size, fp);
42 /* each bit number in the first byte */
43 for (i=0; i < 8; i++)
44 {
45 block[0] = 1 << i;
46 fwrite(block, 1, block_size, fp);
47 }
49 /* first bit of each byte on a power of 2 */
50 block[0] = 0;
51 for (index = 1; index < block_size; index = index << 1)
52 {
53 block[index] = 1;
54 fwrite(block, 1, block_size, fp);
55 block[index] = 0;
56 }
57 }