Guest User

Untitled

a guest
Jan 21st, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.62 KB | None | 0 0
  1. // vi börjar här
  2. BOOL J1587ReadWriteEvent( DevicePtr Device, DeviceEventType Event )
  3. {
  4.     UINT8 RequestBuf[30];
  5.     static UINT8 ReadResult[30];
  6.  
  7.     // .....
  8.  
  9.     // denna funktionen skriver saker i ReadResult
  10.     J1587Response( Device,
  11.         TxISToolReadE2Ack,
  12.         ReadResult,
  13.         CmdBufferRequest.Data[0] );
  14.  
  15.     // .....
  16.  
  17.     // vi sparar ner addressen till ReadResult på ett finurligt vis
  18.     RequestBuf[0]= (UINT32)&ReadResult>>24;  //Buffer address MSB
  19.     RequestBuf[1]= (UINT32)&ReadResult>>16;
  20.     RequestBuf[2]= (UINT32)&ReadResult>>8;
  21.     RequestBuf[3]= (UINT32)&ReadResult;      //Buffer address LSB
  22.  
  23.     // vi anropar lite magiska funktionspekare med hjälp av lite magiska macron
  24.     DeviceWriteIndex(Driver->J1587ConverterDeviceController, ReadPropFaultCodesRequest,
  25.         U8DATAPTR_ARG( RequestBuf, LenghtU8, DATAPTRVAR_IS_NOT_BIG_ENDIAN) );
  26.    
  27.     // .....
  28. }
  29.  
  30. // DeviceWriteIndex() tar oss till slut hit
  31. // UINT8 *Data är RequestBuf[]
  32. static UINT8 KWPStateMachine(DevicePtr Device, UINT8 *Data, UINT8 Length)
  33.  
  34.     // .....
  35.  
  36.     // vi hämtar ut addressen till ReadResult på det finurliga viset
  37.     pTmpReadAddress = (UINT8*)(
  38.         (UINT32)Data[0]<<24 |
  39.         (UINT32)Data[1]<<16 |
  40.         (UINT32)Data[2]<<8 |
  41.         (UINT32)Data[3]);
  42.  
  43.     // vi skickar iväg adressen till något element i pTmpReadAddress.
  44.     // igen via magiska macron.
  45.     // indexet är alltså bestämt utifrån data som ligger i 0:e elementet
  46.     // i buffern
  47.  
  48.     DeviceRead(
  49.         CCPDriver.EEPDevice,
  50.         U8DATAPTR_ARG(
  51.             &pTmpReadAddress[ pTmpReadAddress[0] + 1 ], 11,
  52.             DATAPTRVAR_IS_NOT_BIG_ENDIAN ));
  53.  
  54.     // .....
  55. }
  56.  
  57. // Oh, nämnde jag att funktionen KWPStateMachine() är 2875 rader lång
Add Comment
Please, Sign In to add comment