<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>

<META name=GENERATOR content="MSHTML 9.00.8112.16446"></HEAD>
<BODY>
<DIV><SPAN class=509023108-19062012><FONT size=2 
face=Arial>Hello,</FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 
face=Arial></FONT></SPAN> 
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 face=Arial>I have a project, 
where I have to write a driver for /dev/spidev0.0, but I have problems with 
fpioctl.</FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 
face=Arial></FONT></SPAN> 
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 face=Arial>I believe that I 
have problems with the parameter passing or type casting of 
fpioctl.</FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 face="Courier New">In some 
forums, I've found mysterios Pointer(PtrInt(xx) syntax like that: 
fpioctl(fd,funcnum, Pointer(PtrInt(xy)) : </FONT>
<PRE style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"></SPAN><SPAN class=509023108-19062012><FONT size=2>I have no idea why this construction is necesary</FONT></SPAN>
</PRE><PRE style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><SPAN class=509023108-19062012><FONT size=2></FONT></SPAN> 
</PRE><PRE style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><SPAN class=509023108-19062012><FONT size=2></FONT></SPAN> 
</PRE></DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 face=Arial>My code snipet is 
below:</FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 
face=Arial></FONT></SPAN> 
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 face=Arial>spi_ioc_transfer_t = 
record<BR>
    tx_buf_ptr   : 
pointer;<BR>
    rx_buf_ptr   : 
pointer;<BR>
    len    : 
longword;<BR>
    delay_usec  : 
word;<BR>
    speed_hz     : 
longword;<BR>
    bits_per_word : byte;<BR>
    
cs_change  : byte;<BR>
    pad    : 
longword;<BR>
  end;</FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 
face=Arial></FONT></SPAN> 
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 face=Arial>var xfer : 
array[0..1] of spi_ioc_transfer_t; rx0,tx0 : array[0..42] of byte; 
</FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 
face=Arial></FONT></SPAN> 
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 face=Arial>tx0 [ 0]:=$00; tx0 [ 
1]:=$00; </FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 face=Arial>xfer[0].len:=2; 
xfer[0].speed_hz:=500000; xfer[0].bits_per_word:=8;<BR>
xfer[0].tx_buf_ptr := 
addr(tx0[ 0]); xfer[0].rx_buf_ptr := addr(rx0[ 0]);</FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 
face=Arial></FONT></SPAN> 
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 
face=Arial>fd:=fpOpen('/dev/spidev0.0',O_RdWr);</FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 
face=Arial>...</FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 face=Arial>result := 
fpioctl(fd, (*SPI_IOC_MESSAGE(1)*) 1075866368, @xfer[0]);</FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 face=Arial>(* function number 
107.. 368 taken from operating c example </FONT></SPAN><SPAN 
class=509023108-19062012><FONT size=2 face=Arial>*)</FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 
face=Arial></FONT></SPAN> 
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 face=Arial>I get -1 
as result</FONT></SPAN>
</DIV>
<DIV><SPAN class=509023108-19062012><FONT size=2 face=Arial>What's 
wrong.</FONT></SPAN>
</DIV></BODY></HTML>