00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef FTD2XX_H
00034 #define FTD2XX_H
00035
00036 #ifndef _WINDOWS
00037 #include <pthread.h>
00038 #define WINAPI
00039 #endif
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 #ifdef FTD2XX_EXPORTS
00050 #define FTD2XX_API __declspec(dllexport)
00051 #else
00052 #define FTD2XX_API __declspec(dllimport)
00053 #endif
00054
00055 #ifndef _WINDOWS
00056 #include "WinTypes.h"
00057
00058 #ifdef FTD2XX_API
00059 #undef FTD2XX_API
00060 #define FTD2XX_API
00061 #endif
00062 #endif
00063 typedef struct _EVENT_HANDLE{
00064 pthread_cond_t eCondVar;
00065 pthread_mutex_t eMutex;
00066 int iVar;
00067 } EVENT_HANDLE;
00068
00069 typedef DWORD *FT_HANDLE;
00070
00071 typedef ULONG FT_STATUS;
00072
00073
00074
00075
00076 enum {
00077 FT_OK,
00078 FT_INVALID_HANDLE,
00079 FT_DEVICE_NOT_FOUND,
00080 FT_DEVICE_NOT_OPENED,
00081 FT_IO_ERROR,
00082 FT_INSUFFICIENT_RESOURCES,
00083 FT_INVALID_PARAMETER,
00084 FT_INVALID_BAUD_RATE,
00085
00086 FT_DEVICE_NOT_OPENED_FOR_ERASE,
00087 FT_DEVICE_NOT_OPENED_FOR_WRITE,
00088 FT_FAILED_TO_WRITE_DEVICE,
00089 FT_EEPROM_READ_FAILED,
00090 FT_EEPROM_WRITE_FAILED,
00091 FT_EEPROM_ERASE_FAILED,
00092 FT_EEPROM_NOT_PRESENT,
00093 FT_EEPROM_NOT_PROGRAMMED,
00094 FT_INVALID_ARGS,
00095 FT_NOT_SUPPORTED,
00096 FT_OTHER_ERROR
00097 };
00098
00099
00100 #define FT_SUCCESS(status) ((status) == FT_OK)
00101
00102
00103
00104
00105
00106 #define FT_OPEN_BY_SERIAL_NUMBER 1
00107 #define FT_OPEN_BY_DESCRIPTION 2
00108
00109
00110
00111
00112
00113 #define FT_LIST_NUMBER_ONLY 0x80000000
00114 #define FT_LIST_BY_INDEX 0x40000000
00115 #define FT_LIST_ALL 0x20000000
00116
00117 #define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL)
00118
00119
00120
00121
00122
00123 #define FT_BAUD_300 300
00124 #define FT_BAUD_600 600
00125 #define FT_BAUD_1200 1200
00126 #define FT_BAUD_2400 2400
00127 #define FT_BAUD_4800 4800
00128 #define FT_BAUD_9600 9600
00129 #define FT_BAUD_14400 14400
00130 #define FT_BAUD_19200 19200
00131 #define FT_BAUD_38400 38400
00132 #define FT_BAUD_57600 57600
00133 #define FT_BAUD_115200 115200
00134 #define FT_BAUD_230400 230400
00135 #define FT_BAUD_460800 460800
00136 #define FT_BAUD_921600 921600
00137
00138
00139
00140
00141
00142 #define FT_BITS_8 (UCHAR) 8
00143 #define FT_BITS_7 (UCHAR) 7
00144 #define FT_BITS_6 (UCHAR) 6
00145 #define FT_BITS_5 (UCHAR) 5
00146
00147
00148
00149
00150
00151 #define FT_STOP_BITS_1 (UCHAR) 0
00152 #define FT_STOP_BITS_1_5 (UCHAR) 1
00153 #define FT_STOP_BITS_2 (UCHAR) 2
00154
00155
00156
00157
00158
00159 #define FT_PARITY_NONE (UCHAR) 0
00160 #define FT_PARITY_ODD (UCHAR) 1
00161 #define FT_PARITY_EVEN (UCHAR) 2
00162 #define FT_PARITY_MARK (UCHAR) 3
00163 #define FT_PARITY_SPACE (UCHAR) 4
00164
00165
00166
00167
00168
00169 #define FT_FLOW_NONE 0x0000
00170 #define FT_FLOW_RTS_CTS 0x0100
00171 #define FT_FLOW_DTR_DSR 0x0200
00172 #define FT_FLOW_XON_XOFF 0x0400
00173
00174
00175
00176
00177 #define FT_PURGE_RX 1
00178 #define FT_PURGE_TX 2
00179
00180
00181
00182
00183
00184 typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD);
00185
00186 #define FT_EVENT_RXCHAR 1
00187 #define FT_EVENT_MODEM_STATUS 2
00188
00189
00190
00191
00192
00193 #define FT_DEFAULT_RX_TIMEOUT 300
00194 #define FT_DEFAULT_TX_TIMEOUT 300
00195
00196
00197
00198
00199
00200 typedef ULONG FT_DEVICE;
00201
00202 enum {
00203 FT_DEVICE_BM,
00204 FT_DEVICE_AM,
00205 FT_DEVICE_100AX,
00206 FT_DEVICE_UNKNOWN,
00207 FT_DEVICE_2232C
00208 };
00209
00210
00211 #ifdef __cplusplus
00212 extern "C" {
00213 #endif
00214
00215 FTD2XX_API
00216 FT_STATUS WINAPI FT_Open(
00217 int deviceNumber,
00218 FT_HANDLE *pHandle
00219 );
00220
00221 FTD2XX_API
00222 FT_STATUS WINAPI FT_OpenEx(
00223 PVOID pArg1,
00224 DWORD Flags,
00225 FT_HANDLE *pHandle
00226 );
00227
00228 FTD2XX_API
00229 FT_STATUS WINAPI FT_ListDevices(
00230 PVOID pArg1,
00231 PVOID pArg2,
00232 DWORD Flags
00233 );
00234
00235 FTD2XX_API
00236 FT_STATUS FT_SetVIDPID(
00237 DWORD dwVID,
00238 DWORD dwPID
00239 );
00240
00241 FTD2XX_API
00242 FT_STATUS FT_GetVIDPID(
00243 DWORD * pdwVID,
00244 DWORD * pdwPID
00245 );
00246
00247 FTD2XX_API
00248 FT_STATUS WINAPI FT_Close(
00249 FT_HANDLE ftHandle
00250 );
00251
00252 FTD2XX_API
00253 FT_STATUS WINAPI FT_Read(
00254 FT_HANDLE ftHandle,
00255 LPVOID lpBuffer,
00256 DWORD nBufferSize,
00257 LPDWORD lpBytesReturned
00258 );
00259
00260 FTD2XX_API
00261 FT_STATUS WINAPI FT_Write(
00262 FT_HANDLE ftHandle,
00263 LPVOID lpBuffer,
00264 DWORD nBufferSize,
00265 LPDWORD lpBytesWritten
00266 );
00267
00268 FTD2XX_API
00269 FT_STATUS WINAPI FT_IoCtl(
00270 FT_HANDLE ftHandle,
00271 DWORD dwIoControlCode,
00272 LPVOID lpInBuf,
00273 DWORD nInBufSize,
00274 LPVOID lpOutBuf,
00275 DWORD nOutBufSize,
00276 LPDWORD lpBytesReturned,
00277 LPOVERLAPPED lpOverlapped
00278 );
00279
00280 FTD2XX_API
00281 FT_STATUS WINAPI FT_SetBaudRate(
00282 FT_HANDLE ftHandle,
00283 ULONG BaudRate
00284 );
00285
00286 FTD2XX_API
00287 FT_STATUS WINAPI FT_SetDivisor(
00288 FT_HANDLE ftHandle,
00289 USHORT Divisor
00290 );
00291
00292 FTD2XX_API
00293 FT_STATUS WINAPI FT_SetDataCharacteristics(
00294 FT_HANDLE ftHandle,
00295 UCHAR WordLength,
00296 UCHAR StopBits,
00297 UCHAR Parity
00298 );
00299
00300 FTD2XX_API
00301 FT_STATUS WINAPI FT_SetFlowControl(
00302 FT_HANDLE ftHandle,
00303 USHORT FlowControl,
00304 UCHAR XonChar,
00305 UCHAR XoffChar
00306 );
00307
00308 FTD2XX_API
00309 FT_STATUS WINAPI FT_ResetDevice(
00310 FT_HANDLE ftHandle
00311 );
00312
00313 FTD2XX_API
00314 FT_STATUS WINAPI FT_SetDtr(
00315 FT_HANDLE ftHandle
00316 );
00317
00318 FTD2XX_API
00319 FT_STATUS WINAPI FT_ClrDtr(
00320 FT_HANDLE ftHandle
00321 );
00322
00323 FTD2XX_API
00324 FT_STATUS WINAPI FT_SetRts(
00325 FT_HANDLE ftHandle
00326 );
00327
00328 FTD2XX_API
00329 FT_STATUS WINAPI FT_ClrRts(
00330 FT_HANDLE ftHandle
00331 );
00332
00333 FTD2XX_API
00334 FT_STATUS WINAPI FT_GetModemStatus(
00335 FT_HANDLE ftHandle,
00336 ULONG *pModemStatus
00337 );
00338
00339 FTD2XX_API
00340 FT_STATUS WINAPI FT_SetChars(
00341 FT_HANDLE ftHandle,
00342 UCHAR EventChar,
00343 UCHAR EventCharEnabled,
00344 UCHAR ErrorChar,
00345 UCHAR ErrorCharEnabled
00346 );
00347
00348 FTD2XX_API
00349 FT_STATUS WINAPI FT_Purge(
00350 FT_HANDLE ftHandle,
00351 ULONG Mask
00352 );
00353
00354 FTD2XX_API
00355 FT_STATUS WINAPI FT_SetTimeouts(
00356 FT_HANDLE ftHandle,
00357 ULONG ReadTimeout,
00358 ULONG WriteTimeout
00359 );
00360
00361 FTD2XX_API
00362 FT_STATUS WINAPI FT_GetQueueStatus(
00363 FT_HANDLE ftHandle,
00364 DWORD *dwRxBytes
00365 );
00366
00367 FTD2XX_API
00368 FT_STATUS WINAPI FT_SetEventNotification(
00369 FT_HANDLE ftHandle,
00370 DWORD Mask,
00371 PVOID Param
00372 );
00373
00374 FTD2XX_API
00375 FT_STATUS WINAPI FT_GetStatus(
00376 FT_HANDLE ftHandle,
00377 DWORD *dwRxBytes,
00378 DWORD *dwTxBytes,
00379 DWORD *dwEventDWord
00380 );
00381
00382 FTD2XX_API
00383 FT_STATUS WINAPI FT_SetBreakOn(
00384 FT_HANDLE ftHandle
00385 );
00386
00387 FTD2XX_API
00388 FT_STATUS WINAPI FT_SetBreakOff(
00389 FT_HANDLE ftHandle
00390 );
00391
00392 FTD2XX_API
00393 FT_STATUS WINAPI FT_SetWaitMask(
00394 FT_HANDLE ftHandle,
00395 DWORD Mask
00396 );
00397
00398 FTD2XX_API
00399 FT_STATUS WINAPI FT_WaitOnMask(
00400 FT_HANDLE ftHandle,
00401 DWORD *Mask
00402 );
00403
00404 FTD2XX_API
00405 FT_STATUS WINAPI FT_GetEventStatus(
00406 FT_HANDLE ftHandle,
00407 DWORD *dwEventDWord
00408 );
00409
00410 FTD2XX_API
00411 FT_STATUS WINAPI FT_ReadEE(
00412 FT_HANDLE ftHandle,
00413 DWORD dwWordOffset,
00414 LPWORD lpwValue
00415 );
00416
00417 FTD2XX_API
00418 FT_STATUS WINAPI FT_WriteEE(
00419 FT_HANDLE ftHandle,
00420 DWORD dwWordOffset,
00421 WORD wValue
00422 );
00423
00424 FTD2XX_API
00425 FT_STATUS WINAPI FT_EraseEE(
00426 FT_HANDLE ftHandle
00427 );
00428
00429 #ifndef OLD
00430
00431
00432
00433 typedef struct ft_program_data {
00434
00435 DWORD Signature1;
00436 DWORD Signature2;
00437 DWORD Version;
00438
00439
00440
00441 WORD VendorId;
00442 WORD ProductId;
00443 char *Manufacturer;
00444 char *ManufacturerId;
00445 char *Description;
00446 char *SerialNumber;
00447 WORD MaxPower;
00448 WORD PnP;
00449 WORD SelfPowered;
00450 WORD RemoteWakeup;
00451
00452
00453
00454 UCHAR Rev4;
00455 UCHAR IsoIn;
00456 UCHAR IsoOut;
00457 UCHAR PullDownEnable;
00458 UCHAR SerNumEnable;
00459 UCHAR USBVersionEnable;
00460 WORD USBVersion;
00461
00462
00463
00464 UCHAR Rev5;
00465 UCHAR IsoInA;
00466 UCHAR IsoInB;
00467 UCHAR IsoOutA;
00468 UCHAR IsoOutB;
00469 UCHAR PullDownEnable5;
00470 UCHAR SerNumEnable5;
00471 UCHAR USBVersionEnable5;
00472 WORD USBVersion5;
00473 UCHAR AIsHighCurrent;
00474 UCHAR BIsHighCurrent;
00475 UCHAR IFAIsFifo;
00476 UCHAR IFAIsFifoTar;
00477 UCHAR IFAIsFastSer;
00478 UCHAR AIsVCP;
00479 UCHAR IFBIsFifo;
00480 UCHAR IFBIsFifoTar;
00481 UCHAR IFBIsFastSer;
00482 UCHAR BIsVCP;
00483 } FT_PROGRAM_DATA, *PFT_PROGRAM_DATA;
00484 #else
00485
00486
00487
00488 typedef struct ft_program_data {
00489 WORD VendorId;
00490 WORD ProductId;
00491 char *Manufacturer;
00492 char *ManufacturerId;
00493 char *Description;
00494 char *SerialNumber;
00495 WORD MaxPower;
00496 WORD PnP;
00497 WORD SelfPowered;
00498 WORD RemoteWakeup;
00499
00500
00501
00502 UCHAR Rev4;
00503 UCHAR IsoIn;
00504 UCHAR IsoOut;
00505 UCHAR PullDownEnable;
00506 UCHAR SerNumEnable;
00507 UCHAR USBVersionEnable;
00508 WORD USBVersion;
00509 } FT_PROGRAM_DATA, *PFT_PROGRAM_DATA;
00510 #endif
00511
00512 FTD2XX_API
00513 FT_STATUS WINAPI FT_EE_Program(
00514 FT_HANDLE ftHandle,
00515 PFT_PROGRAM_DATA pData
00516 );
00517
00518 FTD2XX_API
00519 FT_STATUS WINAPI FT_EE_Read(
00520 FT_HANDLE ftHandle,
00521 PFT_PROGRAM_DATA pData
00522 );
00523
00524 FTD2XX_API
00525 FT_STATUS WINAPI FT_EE_UASize(
00526 FT_HANDLE ftHandle,
00527 LPDWORD lpdwSize
00528 );
00529
00530 FTD2XX_API
00531 FT_STATUS WINAPI FT_EE_UAWrite(
00532 FT_HANDLE ftHandle,
00533 PUCHAR pucData,
00534 DWORD dwDataLen
00535 );
00536
00537 FTD2XX_API
00538 FT_STATUS WINAPI FT_EE_UARead(
00539 FT_HANDLE ftHandle,
00540 PUCHAR pucData,
00541 DWORD dwDataLen,
00542 LPDWORD lpdwBytesRead
00543 );
00544
00545 FTD2XX_API
00546 FT_STATUS WINAPI FT_SetLatencyTimer(
00547 FT_HANDLE ftHandle,
00548 UCHAR ucLatency
00549 );
00550
00551 FTD2XX_API
00552 FT_STATUS WINAPI FT_GetLatencyTimer(
00553 FT_HANDLE ftHandle,
00554 PUCHAR pucLatency
00555 );
00556
00557 FTD2XX_API
00558 FT_STATUS WINAPI FT_SetBitMode(
00559 FT_HANDLE ftHandle,
00560 UCHAR ucMask,
00561 UCHAR ucEnable
00562 );
00563
00564 FTD2XX_API
00565 FT_STATUS WINAPI FT_GetBitMode(
00566 FT_HANDLE ftHandle,
00567 PUCHAR pucMode
00568 );
00569
00570 FTD2XX_API
00571 FT_STATUS WINAPI FT_SetUSBParameters(
00572 FT_HANDLE ftHandle,
00573 ULONG ulInTransferSize,
00574 ULONG ulOutTransferSize
00575 );
00576
00577 FTD2XX_API
00578 FT_STATUS WINAPI FT_GetDeviceInfo(
00579 FT_HANDLE ftHandle,
00580 FT_DEVICE *lpftDevice,
00581 LPDWORD lpdwID,
00582 PCHAR SerialNumber,
00583 PCHAR Description,
00584 LPVOID Dummy
00585 );
00586
00587 FTD2XX_API
00588 FT_STATUS WINAPI FT_StopInTask(
00589 FT_HANDLE ftHandle
00590 );
00591
00592 FTD2XX_API
00593 FT_STATUS WINAPI FT_RestartInTask(
00594 FT_HANDLE ftHandle
00595 );
00596
00597 FTD2XX_API
00598 FT_STATUS WINAPI FT_SetResetPipeRetryCount(
00599 FT_HANDLE ftHandle,
00600 DWORD dwCount
00601 );
00602
00603 FTD2XX_API
00604 FT_STATUS WINAPI FT_ResetPort(
00605 FT_HANDLE ftHandle
00606 );
00607
00608
00609
00610
00611
00612
00613 FTD2XX_API
00614 FT_HANDLE WINAPI FT_W32_CreateFile(
00615 LPCSTR lpszName,
00616 DWORD dwAccess,
00617 DWORD dwShareMode,
00618 LPSECURITY_ATTRIBUTES lpSecurityAttributes,
00619 DWORD dwCreate,
00620 DWORD dwAttrsAndFlags,
00621 HANDLE hTemplate
00622 );
00623
00624 FTD2XX_API
00625 BOOL WINAPI FT_W32_CloseHandle(
00626 FT_HANDLE ftHandle
00627 );
00628
00629 FTD2XX_API
00630 BOOL WINAPI FT_W32_ReadFile(
00631 FT_HANDLE ftHandle,
00632 LPVOID lpBuffer,
00633 DWORD nBufferSize,
00634 LPDWORD lpBytesReturned,
00635 LPOVERLAPPED lpOverlapped
00636 );
00637
00638 FTD2XX_API
00639 BOOL WINAPI FT_W32_WriteFile(
00640 FT_HANDLE ftHandle,
00641 LPVOID lpBuffer,
00642 DWORD nBufferSize,
00643 LPDWORD lpBytesWritten,
00644 LPOVERLAPPED lpOverlapped
00645 );
00646
00647 FTD2XX_API
00648 DWORD WINAPI FT_W32_GetLastError(
00649 FT_HANDLE ftHandle
00650 );
00651
00652 FTD2XX_API
00653 BOOL WINAPI FT_W32_GetOverlappedResult(
00654 FT_HANDLE ftHandle,
00655 LPOVERLAPPED lpOverlapped,
00656 LPDWORD lpdwBytesTransferred,
00657 BOOL bWait
00658 );
00659
00660 FTD2XX_API
00661 BOOL WINAPI FT_W32_CancelIo(
00662 FT_HANDLE ftHandle
00663 );
00664
00665
00666
00667
00668
00669 typedef struct _FTCOMSTAT {
00670 DWORD fCtsHold : 1;
00671 DWORD fDsrHold : 1;
00672 DWORD fRlsdHold : 1;
00673 DWORD fXoffHold : 1;
00674 DWORD fXoffSent : 1;
00675 DWORD fEof : 1;
00676 DWORD fTxim : 1;
00677 DWORD fReserved : 25;
00678 DWORD cbInQue;
00679 DWORD cbOutQue;
00680 } FTCOMSTAT, *LPFTCOMSTAT;
00681
00682 typedef struct _FTDCB {
00683 DWORD DCBlength;
00684 DWORD BaudRate;
00685 DWORD fBinary: 1;
00686 DWORD fParity: 1;
00687 DWORD fOutxCtsFlow:1;
00688 DWORD fOutxDsrFlow:1;
00689 DWORD fDtrControl:2;
00690 DWORD fDsrSensitivity:1;
00691 DWORD fTXContinueOnXoff: 1;
00692 DWORD fOutX: 1;
00693 DWORD fInX: 1;
00694 DWORD fErrorChar: 1;
00695 DWORD fNull: 1;
00696 DWORD fRtsControl:2;
00697 DWORD fAbortOnError:1;
00698 DWORD fDummy2:17;
00699 WORD wReserved;
00700 WORD XonLim;
00701 WORD XoffLim;
00702 BYTE ByteSize;
00703 BYTE Parity;
00704 BYTE StopBits;
00705 char XonChar;
00706 char XoffChar;
00707 char ErrorChar;
00708 char EofChar;
00709 char EvtChar;
00710 WORD wReserved1;
00711 } FTDCB, *LPFTDCB;
00712
00713 typedef struct _FTTIMEOUTS {
00714 DWORD ReadIntervalTimeout;
00715 DWORD ReadTotalTimeoutMultiplier;
00716 DWORD ReadTotalTimeoutConstant;
00717 DWORD WriteTotalTimeoutMultiplier;
00718 DWORD WriteTotalTimeoutConstant;
00719 } FTTIMEOUTS,*LPFTTIMEOUTS;
00720
00721
00722 FTD2XX_API
00723 BOOL WINAPI FT_W32_ClearCommBreak(
00724 FT_HANDLE ftHandle
00725 );
00726
00727 FTD2XX_API
00728 BOOL WINAPI FT_W32_ClearCommError(
00729 FT_HANDLE ftHandle,
00730 LPDWORD lpdwErrors,
00731 LPFTCOMSTAT lpftComstat
00732 );
00733
00734 FTD2XX_API
00735 BOOL WINAPI FT_W32_EscapeCommFunction(
00736 FT_HANDLE ftHandle,
00737 DWORD dwFunc
00738 );
00739
00740 FTD2XX_API
00741 BOOL WINAPI FT_W32_GetCommModemStatus(
00742 FT_HANDLE ftHandle,
00743 LPDWORD lpdwModemStatus
00744 );
00745
00746 FTD2XX_API
00747 BOOL WINAPI FT_W32_GetCommState(
00748 FT_HANDLE ftHandle,
00749 LPFTDCB lpftDcb
00750 );
00751
00752 FTD2XX_API
00753 BOOL WINAPI FT_W32_GetCommTimeouts(
00754 FT_HANDLE ftHandle,
00755 FTTIMEOUTS *pTimeouts
00756 );
00757
00758 FTD2XX_API
00759 BOOL WINAPI FT_W32_PurgeComm(
00760 FT_HANDLE ftHandle,
00761 DWORD dwMask
00762 );
00763
00764 FTD2XX_API
00765 BOOL WINAPI FT_W32_SetCommBreak(
00766 FT_HANDLE ftHandle
00767 );
00768
00769 FTD2XX_API
00770 BOOL WINAPI FT_W32_SetCommMask(
00771 FT_HANDLE ftHandle,
00772 ULONG ulEventMask
00773 );
00774
00775 FTD2XX_API
00776 BOOL WINAPI FT_W32_SetCommState(
00777 FT_HANDLE ftHandle,
00778 LPFTDCB lpftDcb
00779 );
00780
00781 FTD2XX_API
00782 BOOL WINAPI FT_W32_SetCommTimeouts(
00783 FT_HANDLE ftHandle,
00784 FTTIMEOUTS *pTimeouts
00785 );
00786
00787 FTD2XX_API
00788 BOOL WINAPI FT_W32_SetupComm(
00789 FT_HANDLE ftHandle,
00790 DWORD dwReadBufferSize,
00791 DWORD dwWriteBufferSize
00792 );
00793
00794 FTD2XX_API
00795 BOOL WINAPI FT_W32_WaitCommEvent(
00796 FT_HANDLE ftHandle,
00797 PULONG pulEvent,
00798 LPOVERLAPPED lpOverlapped
00799 );
00800
00801
00802
00803
00804 #ifdef __cplusplus
00805 }
00806 #endif
00807
00808
00809 #endif
00810
00811
00812
00813
00814
00815