lslah

XCP_ERR_INSUFFICIENT_BUFFER

Jul 30th, 2013
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.80 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3.  
  4. #include "PXCP.h"
  5.  
  6. void Debug(TXCPResult result, std::string function_name);
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10.     TXCPResult result;
  11.     TXCPChannel xcp_channel;
  12.  
  13.     /*** XCP_InitializeCanChannel ***/
  14.     result = XCP_InitializeCanChannel(&xcp_channel,
  15.             PCAN_PCIBUS1,
  16.             PCAN_BAUD_1M,
  17.             0,0,0);
  18.     Debug(result, "XCP_InitializeCanChannel");
  19.  
  20.     /*** XCP_AddSlaveOnCAN ***/
  21.     TXCPTransportLayerCAN layer_data;
  22.     layer_data.BroadcastID = 0;
  23.     layer_data.MasterID = 0x078A;
  24.     layer_data.SlaveID = 0x0791;
  25.     layer_data.IncrementalIdUsed = false;
  26.  
  27.     TXCPProtocolLayerConfig layer_config;
  28.     layer_config.MotorolaFormat = false;
  29.     layer_config.T1 = 2000;
  30.     layer_config.T2 = 2000;
  31.     layer_config.T3 = 2000;
  32.     layer_config.T4 = 65535;
  33.     layer_config.T5 = 2000;
  34.     layer_config.T6 = 5;
  35.     layer_config.T7 = 5;
  36.     layer_config.AddressGranularity = 1;
  37.  
  38.     TXCPHandle xcp_handle;
  39.     result = XCP_AddSlaveOnCAN(xcp_channel,
  40.             layer_data,
  41.             layer_config,
  42.             &xcp_handle);
  43.     Debug(result, "XCP_AddSlaveOnCAN");
  44.  
  45.     /*** XCP_Connect ***/
  46.     BYTE cto_buffer[8];
  47.     BYTE cto_buffer_length = 8;
  48.     result = XCP_Connect(xcp_handle, 0, cto_buffer, cto_buffer_length);
  49.     Debug(result, "XCP_Connect");
  50.  
  51.     /*** XCP_FreeDAQLists ***/
  52.     result =
  53.         XCP_FreeDAQLists(xcp_handle, cto_buffer, cto_buffer_length);
  54.     Debug(result, "XCP_FreeDAQLists");
  55.  
  56.     /*** XCP_AllocateDAQLists ***/
  57.     result =
  58.         XCP_AllocateDAQLists(xcp_handle,
  59.                 1, // number of daq lists
  60.                 cto_buffer,
  61.                 cto_buffer_length);
  62.     Debug(result, "XCP_AllocateDAQLists");
  63.  
  64.     /*** XCP_AllocateODT ****/
  65.     result =
  66.         XCP_AllocateODT(xcp_handle,
  67.                 0, // daq list number
  68.                 1, // number of dtos
  69.                 cto_buffer,
  70.                 cto_buffer_length);
  71.     Debug(result, "XCP_AllocateODT");
  72.  
  73.     /*** XCP_AllocateODTEntry ***/
  74.     result =
  75.         XCP_AllocateODTEntry(xcp_handle,
  76.                 0, // daq list number
  77.                 0, // dto number
  78.                 1, // number of dto entries
  79.                 cto_buffer,
  80.                 cto_buffer_length);
  81.     Debug(result, "XCP_AllocateODTEntry");
  82.  
  83.  
  84.     /*** XCP_SetDAQListPointer ***/
  85.     result = XCP_SetDAQListPointer(
  86.             xcp_handle,
  87.             0, // daq list number
  88.             0, // dto number
  89.             0, // dto_entry number
  90.             cto_buffer,
  91.             cto_buffer_length);
  92.     Debug(result, "XCP_SetDAQListPointer");
  93.  
  94.     /*** XCP_WriteDAQListEntry ***/
  95.     TXCPODTEntry odt_entry;
  96.     odt_entry.BitOffset = 0xFF;
  97.     odt_entry.DAQSize = sizeof(float);
  98.     odt_entry.DAQAddressExtension = 0;
  99.     odt_entry.DAQAddress = 0xD0010FDC;
  100.  
  101.     result = XCP_WriteDAQListEntry(xcp_handle,
  102.             odt_entry,
  103.             cto_buffer,
  104.             cto_buffer_length);
  105.     Debug(result, "XCP_WriteDAQListEntry");
  106.  
  107.     /*** XCP_StartStopDAQList ***/
  108.     result = XCP_StartStopDAQList(xcp_handle,
  109.             1, // Mode: 0-stop, 1-start, 2-select
  110.             0, // list number
  111.             cto_buffer,
  112.             cto_buffer_length);
  113.     Debug(result, "XCP_StartStopDAQList");
  114.  
  115.     WORD packet_buffer_length = 8;
  116.     BYTE packet_buffer[packet_buffer_length];
  117.     result = XCP_DequeuePacket(xcp_handle,
  118.             XCP_DTO_QUEUE,
  119.             packet_buffer,
  120.             packet_buffer_length);
  121.     Debug(result, "XCP_DequeuePacket");
  122.  
  123.  
  124.     return 0;
  125. }
  126.  
  127. void
  128. Debug(TXCPResult result, std::string function_name)
  129. {
  130.     if (result != XCP_ERR_OK) {
  131.         std::cout << function_name << ": Error:" << result << std::endl;
  132.     } else {
  133.         std::cout << function_name << ": XCP_ERR_OK" << std::endl;
  134.     }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment