OSDN Git Service

c03046832ef03028fc991398b5a8ad8a1709a52b
[nyartoolkit-and/nyartoolkit-and.git] / trunk / src / jp / nyatla / nyartoolkit / nyidmarker / data / NyIdMarkerDataEncoder_RawBit.java
1 package jp.nyatla.nyartoolkit.nyidmarker.data;\r
2 \r
3 import jp.nyatla.nyartoolkit.nyidmarker.NyIdMarkerPattern;\r
4 \r
5 \r
6 public class NyIdMarkerDataEncoder_RawBit implements INyIdMarkerDataEncoder\r
7 {       \r
8         private final static int _DOMAIN_ID=0;\r
9         private final static int _mod_data[]={7,31,127,511,2047,4095};\r
10         public boolean encode(NyIdMarkerPattern i_data,INyIdMarkerData o_dest)\r
11         {\r
12                 final NyIdMarkerData_RawBit dest=(NyIdMarkerData_RawBit)o_dest;\r
13                 if(i_data.ctrl_domain!=_DOMAIN_ID){\r
14                         return false;\r
15                 }\r
16                 //パケット数計算\r
17                 final int resolution_len=(i_data.model+1);\r
18                 final int packet_length=(resolution_len*resolution_len)/8+1;\r
19                 int sum=0;\r
20                 for(int i=0;i<packet_length;i++){\r
21                         dest.packet[i]=i_data.data[i];\r
22                         sum+=i_data.data[i];\r
23                 }\r
24                 //チェックドット値計算\r
25                 sum=sum%_mod_data[i_data.model-2];\r
26                 //チェックドット比較\r
27                 if(i_data.check!=sum){\r
28                         return false;\r
29                 }\r
30                 dest.length=packet_length;\r
31                 return true;\r
32         }\r
33         public INyIdMarkerData createDataInstance()\r
34         {\r
35                 return new NyIdMarkerData_RawBit();\r
36         }\r
37 }\r