Advertisement
lslah

Segmentation fault

Jul 30th, 2013
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.28 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.     /*** Set daq list mode ***/
  108.     BYTE mode = 00000000;
  109.  
  110.     TXCPDAQListConfig daq_list_config;
  111.     daq_list_config.DAQListNumber = 0;
  112.     daq_list_config.EventChannelNumber = 0;
  113.     daq_list_config.TransmissionRate = 1;
  114.     daq_list_config.DAQPriority = 0;
  115.  
  116.     result = XCP_SetDAQListMode(xcp_handle,
  117.             mode,
  118.             daq_list_config,
  119.             cto_buffer,
  120.             cto_buffer_length);
  121.     Debug(result, "XCP_SetDAQListMode");
  122.  
  123.     /*** XCP_StartStopDAQList ***/
  124.     result = XCP_StartStopDAQList(xcp_handle,
  125.             1, // Mode: 0-stop, 1-start, 2-select
  126.             0, // list number
  127.             cto_buffer,
  128.             cto_buffer_length);
  129.     Debug(result, "XCP_StartStopDAQList");
  130.  
  131.     /*** XCP_DequeuePacket ***/
  132.     WORD packet_buffer_length = 8;
  133.     BYTE packet_buffer[packet_buffer_length];
  134.     result = XCP_DequeuePacket(xcp_handle,
  135.             XCP_DTO_QUEUE,
  136.             packet_buffer,
  137.             packet_buffer_length);
  138.     Debug(result, "XCP_DequeuePacket");
  139.  
  140.  
  141.     return 0;
  142. }
  143.  
  144. void
  145. Debug(TXCPResult result, std::string function_name)
  146. {
  147.     if (result != XCP_ERR_OK) {
  148.         std::cout << function_name << ": Error:" << result << std::endl;
  149.     } else {
  150.         std::cout << function_name << ": XCP_ERR_OK" << std::endl;
  151.     }
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement