new

Dependents:   epaper_mbed_test_copy1

Revision:
0:9efeb5787ae9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QR_Encode.h	Tue Apr 08 10:08:03 2014 +0000
@@ -0,0 +1,100 @@
+/*
+ * QR_Encode.h
+ *
+ *  Created on: Jan 18, 2012
+ *      Author: swex
+ */
+
+#include <string.h>
+#include <stdlib.h>
+
+
+// Constant
+
+// Error correction level
+#define QR_LEVEL_L	0
+#define QR_LEVEL_M	1
+#define QR_LEVEL_Q	2
+#define QR_LEVEL_H	3
+
+
+//Data Mode
+#define QR_MODE_NUMERAL		0
+#define QR_MODE_ALPHABET	1
+#define QR_MODE_8BIT		2
+#define QR_MODE_KANJI		3
+
+
+//Group version (model number)
+#define QR_VERSION_S	0 // 1 ~ 9
+#define QR_VERSION_M	1 // 10 ~ 26
+#define QR_VERSION_L	2 // 27 ~ 40
+
+#define MAX_ALLCODEWORD	 3706 //The maximum total number of code words
+#define MAX_DATACODEWORD 2956 //Maximum data word code (version 40-L)
+
+#define MAX_CODEBLOCK	  153 //(Including RS code word) the maximum number of block data code word
+#define MAX_MODULESIZE	  177 //Maximum number of modules in a side
+#define MAX_BITDATA		 3917 // finfile data
+
+//Margin when drawing a bitmap
+//#define QR_MARGIN	4
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+typedef struct tagRS_BLOCKINFO
+{
+	int ncRSBlock;		//RS block number
+	int ncAllCodeWord;	//The number of codewords in the block
+	int ncDataCodeWord;	//The number of data code words (the number of code words - the number of RS code word)
+
+} RS_BLOCKINFO, *LPRS_BLOCKINFO;
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+//Version code-related information (model number)
+
+typedef struct tagQR_VERSIONINFO
+{
+	int nVersionNo;
+	int ncAllCodeWord;
+
+	// Error correction levels (0 = L, 1 = M, 2 = Q, 3 = H)
+	int ncDataCodeWord[4];	// data len
+
+	int ncAlignPoint;	// position
+	int nAlignPoint[6];	// numberof
+
+	RS_BLOCKINFO RS_BlockInfo1[4]; // EC pos
+	RS_BLOCKINFO RS_BlockInfo2[4]; // EC pos
+
+} QR_VERSIONINFO, *LPQR_VERSIONINFO;
+
+
+typedef unsigned short WORD;
+
+typedef unsigned char BYTE;
+
+typedef BYTE* LPBYTE;
+
+typedef const char* LPCSTR;
+
+#define ZeroMemory(Destination,Length) memset((Destination),0,(Length))
+int EncodeData(int nLevel, int nVersion , LPCSTR lpsSource, int sourcelen,unsigned char QR_m_data[]);
+
+/*nLevel - уровень коррекции ошибок
+#define QR_LEVEL_L	0
+#define QR_LEVEL_M	1
+#define QR_LEVEL_Q	2
+#define QR_LEVEL_H	3
+
+nVersion - версия кода 1 - 40 разрешение итд 0 - автоопределение исходя из размера
+
+lpsSource - данные на вход
+sourcelen - длинна строки 0 - автоопределение, strlen \0 оборвет.
+QR_m_data - массив для записи, пишет в биты.
+
+функция возвращает сторону квадрата.
+*/