Changeset 2916
- Timestamp:
- 08/13/10 14:25:29 (14 years ago)
- Location:
- trunk/csctapi
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/csctapi/icc_async.c
r2885 r2916 149 149 if (reader->typ == R_MP35) 150 150 { 151 MP35_Init(reader); 151 if (MP35_Init(reader)) { 152 cs_log("ERROR: MP35_Init returns error"); 153 MP35_Close (reader); 154 return ERROR; 155 } 152 156 } 153 157 else if (reader->typ <= R_MOUSE) … … 192 196 break; 193 197 case R_MP35: 194 // call (MP35_GetStatus(reader, &in));195 // break;196 198 case R_MOUSE: 197 199 call (Phoenix_GetStatus(reader, &in)); -
trunk/csctapi/ifd_mp35.c
r2905 r2916 10 10 11 11 // Commands for AD-Teknik MP3.5 and MP3.6 12 static const BYTE power_always_on[] = {0x2a, 0x8a}; 12 13 static const BYTE set_vpp[] = {0x2a, 0x42}; 13 14 static const BYTE set_data[] = {0x2a, 0x43}; … … 25 26 26 27 static const struct product { BYTE code; const char* product_name; } product_codes[] = { 27 {0x10, "USB Phoenix"}, 28 {0x40, "MP3.4"}, 28 {0x10, "USB Phoenix"}, 29 {0x40, "MP3.4"}, 29 30 {0x41, "MP3.5"}, 30 31 {0x42, "MP3.6 USB"}}; 31 32 32 BYTE current_product;33 static BYTE current_product; 33 34 34 35 static int MP35_product_info(BYTE high, BYTE low, BYTE code) … … 41 42 { 42 43 cs_log("MP35_Init: %s - FW:%02d.%02d", product_codes[i].product_name, high, low); 44 current_product = code; 43 45 return OK; 44 46 } … … 54 56 int original_mhz; 55 57 56 current_product = 0;57 memset(rec_buf, 0x00, sizeof(rec_buf));58 call(IO_Serial_InitPnP (reader));59 IO_Serial_Flush(reader);60 61 58 cs_debug_mask (D_IFD, "IFD: Initializing MP35 reader %s", reader->label); 62 59 60 current_product = 0; 63 61 original_mhz = reader->mhz; // MP3.5 commands should be always be written using 9600 baud at 3.58MHz 64 62 reader->mhz = 357; 63 64 call(IO_Serial_SetParams(reader, 9600, 8, PARITY_NONE, 1, IO_SERIAL_HIGH, IO_SERIAL_HIGH)); 65 65 66 call(IO_Serial_SetParams (reader, 9600, 8, PARITY_NONE, 1, IO_SERIAL_HIGH, IO_SERIAL_HIGH));67 66 IO_Serial_Sendbreak(reader, 1200); 68 67 IO_Serial_DTR_Clr(reader); … … 70 69 71 70 IO_Serial_DTR_Set(reader); 72 71 72 memset(rec_buf, 0x00, sizeof(rec_buf)); 73 73 call(IO_Serial_Write(reader, 0, 2, fw_version)); 74 74 call(IO_Serial_Read(reader, 200, 4, rec_buf)); … … 81 81 if(MP35_product_info(rec_buf[1], rec_buf[0], rec_buf[2]) != OK) 82 82 { 83 cs_log("MP35_Init ,unknown product code");83 cs_log("MP35_Init: unknown product code"); 84 84 return ERROR; 85 85 } 86 current_product = rec_buf[2];87 /*88 call(IO_Serial_Write(reader, 0, 2, terminate_com));89 call(IO_Serial_Read(reader, 200, 1, rec_buf));90 if(rec_buf[0] != ACK)91 {92 cs_debug_mask (D_IFD, "IFD: Failed MP35 command: terminate_com");93 return ERROR;94 }95 96 parameter = 0x01;97 call(IO_Serial_Write(reader, 0, 2, set_vpp));98 call(IO_Serial_Write(reader, 0, 1, ¶meter));99 call(IO_Serial_Read(reader, 200, 1, rec_buf));100 if(rec_buf[0] != ACK)101 {102 cs_debug_mask (D_IFD, "IFD: Failed MP35 command: set_vpp");103 return ERROR;104 }105 106 parameter = 0x02;107 call(IO_Serial_Write(reader, 0, 2, set_data));108 call(IO_Serial_Write(reader, 0, 1, ¶meter));109 call(IO_Serial_Read(reader, 200, 1, rec_buf));110 if(rec_buf[0] != ACK)111 {112 cs_debug_mask (D_IFD, "IFD: Failed MP35 command: set_data");113 return ERROR;114 }115 116 parameter = 0x01;117 call(IO_Serial_Write(reader, 0, 2, set_oscillator));118 call(IO_Serial_Write(reader, 0, 1, ¶meter));119 call(IO_Serial_Read(reader, 200, 1, rec_buf));120 if(rec_buf[0] != ACK)121 {122 cs_debug_mask (D_IFD, "IFD: Failed MP35 command: set_oscillator");123 return ERROR;124 }125 126 call(IO_Serial_SetParams (reader, 9600, 8, PARITY_NONE, 1, IO_SERIAL_HIGH, IO_SERIAL_LOW));127 128 call(IO_Serial_Write(reader, 0, 2, transthrough_mode));129 */130 86 131 87 if(current_product == 0x10) // USB Phoenix … … 133 89 if(original_mhz == 357) 134 90 { 135 cs_log("MP35_Init ,Using oscillator 1 (3.57MHz)");91 cs_log("MP35_Init: Using oscillator 1 (3.57MHz)"); 136 92 parameter = 0x01; 137 93 } 138 94 else if(original_mhz == 368) 139 95 { 140 cs_log("MP35_Init ,Using oscillator 2 (3.68MHz)");96 cs_log("MP35_Init: Using oscillator 2 (3.68MHz)"); 141 97 parameter = 0x02; 142 98 } 143 99 else if(original_mhz == 600) 144 100 { 145 cs_log("MP35_Init ,Using oscillator 3 (6.00MHz)");101 cs_log("MP35_Init: Using oscillator 3 (6.00MHz)"); 146 102 parameter = 0x03; 147 103 } 148 104 else 149 105 { 150 cs_log("MP35_Init ,MP35 support only mhz=357, mhz=368 or mhz=600");151 cs_log("MP35_Init ,Forced oscillator 1 (3.57MHz)");106 cs_log("MP35_Init: MP35 support only mhz=357, mhz=368 or mhz=600"); 107 cs_log("MP35_Init: Forced oscillator 1 (3.57MHz)"); 152 108 parameter = 0x01; 153 109 original_mhz = 357; 154 110 } 111 memset(rec_buf, 0x00, sizeof(rec_buf)); 155 112 call(IO_Serial_Write(reader, 0, 2, set_mode_osc)); 156 113 call(IO_Serial_Write(reader, 0, 1, ¶meter)); … … 161 118 return ERROR; 162 119 } 163 cs_log("MP35_Init, Leaving programming mode"); 120 cs_log("MP35_Init: Leaving programming mode"); 121 memset(rec_buf, 0x00, sizeof(rec_buf)); 164 122 call(IO_Serial_Write(reader, 0, 2, exit_program_mode)); 165 123 call(IO_Serial_Read(reader, 200, 1, rec_buf)); … … 172 130 else //MP3.5 or MP3.6 173 131 { 132 memset(rec_buf, 0x00, sizeof(rec_buf)); 133 call(IO_Serial_Write(reader, 0, 2, power_always_on)); 134 call(IO_Serial_Read(reader, 200, 1, rec_buf)); 135 if(rec_buf[0] != ACK) 136 { 137 cs_debug_mask (D_IFD, "IFD: Failed MP35 command: power_always_on"); 138 return ERROR; 139 } 140 141 memset(rec_buf, 0x00, sizeof(rec_buf)); 174 142 if(original_mhz == 357) 175 143 { 176 cs_log("MP35_Init ,Using oscillator 1 (3.57MHz)");144 cs_log("MP35_Init: Using oscillator 1 (3.57MHz)"); 177 145 call(IO_Serial_Write(reader, 0, 2, phoenix_mode)); 178 146 } 179 147 else if(original_mhz == 600) 180 148 { 181 cs_log("MP35_Init ,Using oscillator 2 (6.00MHz)");149 cs_log("MP35_Init: Using oscillator 2 (6.00MHz)"); 182 150 call(IO_Serial_Write(reader, 0, 2, phoenix_6mhz_mode)); 183 151 } 184 152 else 185 153 { 186 cs_log("MP35_Init ,MP35 support only mhz=357 or mhz=600");187 cs_log("MP35_Init ,Forced oscillator 1 (3.57MHz)");154 cs_log("MP35_Init: MP35 support only mhz=357 or mhz=600"); 155 cs_log("MP35_Init: Forced oscillator 1 (3.57MHz)"); 188 156 call(IO_Serial_Write(reader, 0, 2, phoenix_mode)); 189 157 original_mhz = 357; … … 192 160 193 161 reader->mhz = original_mhz; // We might have switched oscillator here 194 162 195 163 IO_Serial_Flush(reader); 196 164
Note:
See TracChangeset
for help on using the changeset viewer.