* @param[in] port = port context struct
* @return new index.
*/
-int ecx_getindex(ecx_portt *port)
+uint8 ecx_getindex(ecx_portt *port)
{
- int idx;
- int cnt = 0;
+ uint8 idx;
+ uint8 cnt = 0;
ee_port_lock();
* @param[in] idx = index in buffer array
* @param[in] bufstat = status to set
*/
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat)
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat)
{
port->rxbufstat[idx] = bufstat;
if (port->redstate != ECT_RED_NONE)
* @param[in] stacknumber = 0=Primary 1=Secondary stack
* @return socket send result
*/
-int ecx_outframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_outframe(ecx_portt *port, uint8 idx, int stacknumber)
{
int lp;
ec_stackT *stack;
* @param[in] idx = index in tx buffer array
* @return socket send result
*/
-int ecx_outframe_red(ecx_portt *port, int idx)
+int ecx_outframe_red(ecx_portt *port, uint8 idx)
{
ec_comt *datagramP;
ec_etherheadert *ehp;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME or EC_OTHERFRAME.
*/
-int ecx_inframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_inframe(ecx_portt *port, uint8 idx, int stacknumber)
{
uint16 l;
int rval;
- int idxf;
+ uint8 idxf;
ec_etherheadert *ehp;
ec_comt *ecp;
ec_stackT *stack;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer)
+static int ecx_waitinframe_red(ecx_portt *port, uint8 idx, osal_timert *timer)
{
osal_timert timer2;
int wkc = EC_NOFRAME;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout)
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout)
{
int wkc;
osal_timert timer;
* @param[in] timeout = timeout in us
* @return Workcounter or EC_NOFRAME
*/
-int ecx_srconfirm(ecx_portt *port, int idx, int timeout)
+int ecx_srconfirm(ecx_portt *port, uint8 idx, int timeout)
{
int wkc = EC_NOFRAME;
osal_timert timer1, timer2;
return ecx_getindex(&ecx_port);
}
-void ec_setbufstat(int idx, int bufstat)
+void ec_setbufstat(uint8 idx, int bufstat)
{
ecx_setbufstat(&ecx_port, idx, bufstat);
}
-int ec_outframe(int idx, int stacknumber)
+int ec_outframe(uint8 idx, int stacknumber)
{
return ecx_outframe(&ecx_port, idx, stacknumber);
}
-int ec_outframe_red(int idx)
+int ec_outframe_red(uint8 idx)
{
return ecx_outframe_red(&ecx_port, idx);
}
-int ec_inframe(int idx, int stacknumber)
+int ec_inframe(uint8 idx, int stacknumber)
{
return ecx_inframe(&ecx_port, idx, stacknumber);
}
-int ec_waitinframe(int idx, int timeout)
+int ec_waitinframe(uint8 idx, int timeout)
{
return ecx_waitinframe(&ecx_port, idx, timeout);
}
-int ec_srconfirm(int idx, int timeout)
+int ec_srconfirm(uint8 idx, int timeout)
{
return ecx_srconfirm(&ecx_port, idx, timeout);
}
/** temporary tx buffer length */
int txbuflength2;
/** last used frame index */
- int lastidx;
+ uint8 lastidx;
/** current redundancy state */
int redstate;
/** pointer to redundancy port and buffers */
int ec_setupnic(const char * ifname, int secondary);
int ec_closenic(void);
-void ec_setbufstat(int idx, int bufstat);
-int ec_getindex(void);
-int ec_outframe(int idx, int sock);
-int ec_outframe_red(int idx);
-int ec_waitinframe(int idx, int timeout);
-int ec_srconfirm(int idx,int timeout);
-int ec_inframe(int idx, int stacknumber);
+void ec_setbufstat(uint8 idx, int bufstat);
+uint8 ec_getindex(void);
+int ec_outframe(uint8 idx, int sock);
+int ec_outframe_red(uint8 idx);
+int ec_waitinframe(uint8 idx, int timeout);
+int ec_srconfirm(uint8 idx,int timeout);
+int ec_inframe(uint8 idx, int stacknumber);
#endif
void ec_setupheader(void *p);
int ecx_setupnic(ecx_portt *port, const char *ifname, int secondary);
int ecx_closenic(ecx_portt *port);
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat);
-int ecx_getindex(ecx_portt *port);
-int ecx_outframe(ecx_portt *port, int idx, int sock);
-int ecx_outframe_red(ecx_portt *port, int idx);
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout);
-int ecx_srconfirm(ecx_portt *port, int idx,int timeout);
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat);
+uint8 ecx_getindex(ecx_portt *port);
+int ecx_outframe(ecx_portt *port, uint8 idx, int sock);
+int ecx_outframe_red(ecx_portt *port, uint8 idx);
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout);
+int ecx_srconfirm(ecx_portt *port, uint8 idx,int timeout);
-int ecx_inframe(ecx_portt *port, int idx, int stacknumber);
+int ecx_inframe(ecx_portt *port, uint8 idx, int stacknumber);
#ifdef __cplusplus
}
/** Get new frame identifier index and allocate corresponding rx buffer.
* @return new index.
*/
-int ecx_getindex(ecx_portt *port)
+uint8 ecx_getindex(ecx_portt *port)
{
uint8 idx;
- int cnt;
+ uint8 cnt;
WaitForRtControl(port->getindex_region);
* @param[in] idx = index in buffer array
* @param[in] bufstat = status to set
*/
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat)
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat)
{
port->rxbufstat[idx] = bufstat;
if (port->redstate != ECT_RED_NONE)
* @param[in] stacknumber = 0=Primary 1=Secondary stack
* @return socket send result
*/
-int ecx_outframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_outframe(ecx_portt *port, uint8 idx, int stacknumber)
{
HPESTATUS status;
DWORD txstate;
* @param[in] idx = index in tx buffer array
* @return socket send result
*/
-int ecx_outframe_red(ecx_portt *port, int idx)
+int ecx_outframe_red(ecx_portt *port, uint8 idx)
{
HPESTATUS status;
ec_comt *datagramP;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME or EC_OTHERFRAME.
*/
-int ecx_inframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_inframe(ecx_portt *port, uint8 idx, int stacknumber)
{
uint16 l;
int rval;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer)
+static int ecx_waitinframe_red(ecx_portt *port, uint8 idx, osal_timert *timer)
{
osal_timert timer2;
int wkc = EC_NOFRAME;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout)
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout)
{
int wkc;
osal_timert timer;
* @param[in] timeout = timeout in us
* @return Workcounter or EC_NOFRAME
*/
-int ecx_srconfirm(ecx_portt *port, int idx, int timeout)
+int ecx_srconfirm(ecx_portt *port, uint8 idx, int timeout)
{
int wkc = EC_NOFRAME;
osal_timert timer1;
return ecx_closenic(&ecx_port);
}
-int ec_getindex(void)
+uint8 ec_getindex(void)
{
return ecx_getindex(&ecx_port);
}
-void ec_setbufstat(int idx, int bufstat)
+void ec_setbufstat(uint8 idx, int bufstat)
{
ecx_setbufstat(&ecx_port, idx, bufstat);
}
-int ec_outframe(int idx, int stacknumber)
+int ec_outframe(uint8 idx, int stacknumber)
{
return ecx_outframe(&ecx_port, idx, stacknumber);
}
-int ec_outframe_red(int idx)
+int ec_outframe_red(uint8 idx)
{
return ecx_outframe_red(&ecx_port, idx);
}
-int ec_inframe(int idx, int stacknumber)
+int ec_inframe(uint8 idx, int stacknumber)
{
return ecx_inframe(&ecx_port, idx, stacknumber);
}
-int ec_waitinframe(int idx, int timeout)
+int ec_waitinframe(uint8 idx, int timeout)
{
return ecx_waitinframe(&ecx_port, idx, timeout);
}
-int ec_srconfirm(int idx, int timeout)
+int ec_srconfirm(uint8 idx, int timeout)
{
return ecx_srconfirm(&ecx_port, idx, timeout);
}
/** temporary tx buffer length */
int txbuflength2;
/** last used frame index */
- int lastidx;
+ uint8 lastidx;
/** current redundancy state */
int redstate;
/** pointer to redundancy port and buffers */
int ec_setupnic(const char * ifname, int secondary);
int ec_closenic(void);
void ec_setupheader(void *p);
-void ec_setbufstat(int idx, int bufstat);
-int ec_getindex(void);
-int ec_outframe(int idx, int sock);
-int ec_outframe_red(int idx);
-int ec_waitinframe(int idx, int timeout);
-int ec_srconfirm(int idx,int timeout);
+void ec_setbufstat(uint8 idx, int bufstat);
+uint8 ec_getindex(void);
+int ec_outframe(uint8 idx, int sock);
+int ec_outframe_red(uint8 idx);
+int ec_waitinframe(uint8 idx, int timeout);
+int ec_srconfirm(uint8 idx,int timeout);
int ecx_setupnic(ecx_portt *port, const char * ifname, int secondary);
int ecx_closenic(ecx_portt *port);
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat);
-int ecx_getindex(ecx_portt *port);
-int ecx_outframe(ecx_portt *port, int idx, int sock);
-int ecx_outframe_red(ecx_portt *port, int idx);
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout);
-int ecx_srconfirm(ecx_portt *port, int idx,int timeout);
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat);
+uint8 ecx_getindex(ecx_portt *port);
+int ecx_outframe(ecx_portt *port, uint8 idx, int sock);
+int ecx_outframe_red(ecx_portt *port, uint8 idx);
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout);
+int ecx_srconfirm(ecx_portt *port, uint8 idx,int timeout);
#endif
* @param[in] port = port context struct
* @return new index.
*/
-int ecx_getindex(ecx_portt *port)
+uint8 ecx_getindex(ecx_portt *port)
{
- int idx;
- int cnt;
+ uint8 idx;
+ uint8 cnt;
pthread_mutex_lock( &(port->getindex_mutex) );
* @param[in] idx = index in buffer array
* @param[in] bufstat = status to set
*/
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat)
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat)
{
port->rxbufstat[idx] = bufstat;
if (port->redstate != ECT_RED_NONE)
* @param[in] stacknumber = 0=Primary 1=Secondary stack
* @return socket send result
*/
-int ecx_outframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_outframe(ecx_portt *port, uint8 idx, int stacknumber)
{
int lp, rval;
ec_stackT *stack;
* @param[in] idx = index in tx buffer array
* @return socket send result
*/
-int ecx_outframe_red(ecx_portt *port, int idx)
+int ecx_outframe_red(ecx_portt *port, uint8 idx)
{
ec_comt *datagramP;
ec_etherheadert *ehp;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME or EC_OTHERFRAME.
*/
-int ecx_inframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_inframe(ecx_portt *port, uint8 idx, int stacknumber)
{
uint16 l;
int rval;
- int idxf;
+ uint8 idxf;
ec_etherheadert *ehp;
ec_comt *ecp;
ec_stackT *stack;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer)
+static int ecx_waitinframe_red(ecx_portt *port, uint8 idx, osal_timert *timer)
{
osal_timert timer2;
int wkc = EC_NOFRAME;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout)
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout)
{
int wkc;
osal_timert timer;
* @param[in] timeout = timeout in us
* @return Workcounter or EC_NOFRAME
*/
-int ecx_srconfirm(ecx_portt *port, int idx, int timeout)
+int ecx_srconfirm(ecx_portt *port, uint8 idx, int timeout)
{
int wkc = EC_NOFRAME;
osal_timert timer1, timer2;
return ecx_closenic(&ecx_port);
}
-int ec_getindex(void)
+uint8 ec_getindex(void)
{
return ecx_getindex(&ecx_port);
}
-void ec_setbufstat(int idx, int bufstat)
+void ec_setbufstat(uint8 idx, int bufstat)
{
ecx_setbufstat(&ecx_port, idx, bufstat);
}
-int ec_outframe(int idx, int stacknumber)
+int ec_outframe(uint8 idx, int stacknumber)
{
return ecx_outframe(&ecx_port, idx, stacknumber);
}
-int ec_outframe_red(int idx)
+int ec_outframe_red(uint8 idx)
{
return ecx_outframe_red(&ecx_port, idx);
}
-int ec_inframe(int idx, int stacknumber)
+int ec_inframe(uint8 idx, int stacknumber)
{
return ecx_inframe(&ecx_port, idx, stacknumber);
}
-int ec_waitinframe(int idx, int timeout)
+int ec_waitinframe(uint8 idx, int timeout)
{
return ecx_waitinframe(&ecx_port, idx, timeout);
}
-int ec_srconfirm(int idx, int timeout)
+int ec_srconfirm(uint8 idx, int timeout)
{
return ecx_srconfirm(&ecx_port, idx, timeout);
}
/** temporary tx buffer length */
int txbuflength2;
/** last used frame index */
- int lastidx;
+ uint8 lastidx;
/** current redundancy state */
int redstate;
/** pointer to redundancy port and buffers */
int ec_setupnic(const char * ifname, int secondary);
int ec_closenic(void);
-void ec_setbufstat(int idx, int bufstat);
-int ec_getindex(void);
-int ec_outframe(int idx, int sock);
-int ec_outframe_red(int idx);
-int ec_waitinframe(int idx, int timeout);
-int ec_srconfirm(int idx,int timeout);
+void ec_setbufstat(uint8 idx, int bufstat);
+uint8 ec_getindex(void);
+int ec_outframe(uint8 idx, int sock);
+int ec_outframe_red(uint8 idx);
+int ec_waitinframe(uint8 idx, int timeout);
+int ec_srconfirm(uint8 idx,int timeout);
#endif
void ec_setupheader(void *p);
int ecx_setupnic(ecx_portt *port, const char * ifname, int secondary);
int ecx_closenic(ecx_portt *port);
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat);
-int ecx_getindex(ecx_portt *port);
-int ecx_outframe(ecx_portt *port, int idx, int sock);
-int ecx_outframe_red(ecx_portt *port, int idx);
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout);
-int ecx_srconfirm(ecx_portt *port, int idx,int timeout);
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat);
+uint8 ecx_getindex(ecx_portt *port);
+int ecx_outframe(ecx_portt *port, uint8 idx, int sock);
+int ecx_outframe_red(ecx_portt *port, uint8 idx);
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout);
+int ecx_srconfirm(ecx_portt *port, uint8 idx,int timeout);
#ifdef __cplusplus
}
* @param[in] port = port context struct
* @return new index.
*/
-int ecx_getindex(ecx_portt *port)
+uint8 ecx_getindex(ecx_portt *port)
{
- int idx;
- int cnt;
+ uint8 idx;
+ uint8 cnt;
pthread_mutex_lock(&(port->getindex_mutex));
* @param[in] idx = index in buffer array
* @param[in] bufstat = status to set
*/
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat)
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat)
{
port->rxbufstat[idx] = bufstat;
if (port->redstate != ECT_RED_NONE)
* @param[in] stacknumber = 0=Primary 1=Secondary stack
* @return socket send result
*/
-int ecx_outframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_outframe(ecx_portt *port, uint8 idx, int stacknumber)
{
int lp, rval;
ec_stackT *stack;
* @param[in] idx = index in tx buffer array
* @return socket send result
*/
-int ecx_outframe_red(ecx_portt *port, int idx)
+int ecx_outframe_red(ecx_portt *port, uint8 idx)
{
ec_comt *datagramP;
ec_etherheadert *ehp;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME or EC_OTHERFRAME.
*/
-int ecx_inframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_inframe(ecx_portt *port, uint8 idx, int stacknumber)
{
uint16 l;
int rval;
- int idxf;
+ uint8 idxf;
ec_etherheadert *ehp;
ec_comt *ecp;
ec_stackT *stack;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer)
+static int ecx_waitinframe_red(ecx_portt *port, uint8 idx, osal_timert *timer)
{
osal_timert timer2;
int wkc = EC_NOFRAME;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout)
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout)
{
int wkc;
osal_timert timer;
* @param[in] timeout = timeout in us
* @return Workcounter or EC_NOFRAME
*/
-int ecx_srconfirm(ecx_portt *port, int idx, int timeout)
+int ecx_srconfirm(ecx_portt *port, uint8 idx, int timeout)
{
int wkc = EC_NOFRAME;
osal_timert timer1, timer2;
return ecx_closenic(&ecx_port);
}
-int ec_getindex(void)
+uint8 ec_getindex(void)
{
return ecx_getindex(&ecx_port);
}
-void ec_setbufstat(int idx, int bufstat)
+void ec_setbufstat(uint8 idx, int bufstat)
{
ecx_setbufstat(&ecx_port, idx, bufstat);
}
-int ec_outframe(int idx, int stacknumber)
+int ec_outframe(uint8 idx, int stacknumber)
{
return ecx_outframe(&ecx_port, idx, stacknumber);
}
-int ec_outframe_red(int idx)
+int ec_outframe_red(uint8 idx)
{
return ecx_outframe_red(&ecx_port, idx);
}
-int ec_inframe(int idx, int stacknumber)
+int ec_inframe(uint8 idx, int stacknumber)
{
return ecx_inframe(&ecx_port, idx, stacknumber);
}
-int ec_waitinframe(int idx, int timeout)
+int ec_waitinframe(uint8 idx, int timeout)
{
return ecx_waitinframe(&ecx_port, idx, timeout);
}
-int ec_srconfirm(int idx, int timeout)
+int ec_srconfirm(uint8 idx, int timeout)
{
return ecx_srconfirm(&ecx_port, idx, timeout);
}
/** temporary tx buffer length */
int txbuflength2;
/** last used frame index */
- int lastidx;
+ uint8 lastidx;
/** current redundancy state */
int redstate;
/** pointer to redundancy port and buffers */
int ec_setupnic(const char * ifname, int secondary);
int ec_closenic(void);
-void ec_setbufstat(int idx, int bufstat);
-int ec_getindex(void);
-int ec_outframe(int idx, int sock);
-int ec_outframe_red(int idx);
-int ec_waitinframe(int idx, int timeout);
-int ec_srconfirm(int idx,int timeout);
+void ec_setbufstat(uint8 idx, int bufstat);
+uint8 ec_getindex(void);
+int ec_outframe(uint8 idx, int sock);
+int ec_outframe_red(uint8 idx);
+int ec_waitinframe(uint8 idx, int timeout);
+int ec_srconfirm(uint8 idx,int timeout);
#endif
void ec_setupheader(void *p);
int ecx_setupnic(ecx_portt *port, const char * ifname, int secondary);
int ecx_closenic(ecx_portt *port);
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat);
-int ecx_getindex(ecx_portt *port);
-int ecx_outframe(ecx_portt *port, int idx, int sock);
-int ecx_outframe_red(ecx_portt *port, int idx);
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout);
-int ecx_srconfirm(ecx_portt *port, int idx,int timeout);
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat);
+uint8 ecx_getindex(ecx_portt *port);
+int ecx_outframe(ecx_portt *port, uint8 idx, int sock);
+int ecx_outframe_red(ecx_portt *port, uint8 idx);
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout);
+int ecx_srconfirm(ecx_portt *port, uint8 idx,int timeout);
#ifdef __cplusplus
}
* @param[in] port = port context struct
* @return new index.
*/
-int ecx_getindex(ecx_portt *port)
+uint8 ecx_getindex(ecx_portt *port)
{
- int idx;
- int cnt;
+ uint8 idx;
+ uint8 cnt;
pthread_mutex_lock( &(port->getindex_mutex) );
* @param[in] idx = index in buffer array
* @param[in] bufstat = status to set
*/
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat)
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat)
{
port->rxbufstat[idx] = bufstat;
if (port->redstate != ECT_RED_NONE)
* @param[in] stacknumber = 0=Primary 1=Secondary stack
* @return socket send result
*/
-int ecx_outframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_outframe(ecx_portt *port, uint8 idx, int stacknumber)
{
int lp, rval;
ec_stackT *stack;
* @param[in] idx = index in tx buffer array
* @return socket send result
*/
-int ecx_outframe_red(ecx_portt *port, int idx)
+int ecx_outframe_red(ecx_portt *port, uint8 idx)
{
ec_comt *datagramP;
ec_etherheadert *ehp;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME or EC_OTHERFRAME.
*/
-int ecx_inframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_inframe(ecx_portt *port, uint8 idx, int stacknumber)
{
uint16 l;
int rval;
- int idxf;
+ uint8 idxf;
ec_etherheadert *ehp;
ec_comt *ecp;
ec_stackT *stack;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer)
+static int ecx_waitinframe_red(ecx_portt *port, uint8 idx, osal_timert *timer)
{
osal_timert timer2;
int wkc = EC_NOFRAME;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout)
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout)
{
int wkc;
osal_timert timer;
* @param[in] timeout = timeout in us
* @return Workcounter or EC_NOFRAME
*/
-int ecx_srconfirm(ecx_portt *port, int idx, int timeout)
+int ecx_srconfirm(ecx_portt *port, uint8 idx, int timeout)
{
int wkc = EC_NOFRAME;
osal_timert timer1, timer2;
return ecx_closenic(&ecx_port);
}
-int ec_getindex(void)
+uint8 ec_getindex(void)
{
return ecx_getindex(&ecx_port);
}
-void ec_setbufstat(int idx, int bufstat)
+void ec_setbufstat(uint8 idx, int bufstat)
{
ecx_setbufstat(&ecx_port, idx, bufstat);
}
-int ec_outframe(int idx, int stacknumber)
+int ec_outframe(uint8 idx, int stacknumber)
{
return ecx_outframe(&ecx_port, idx, stacknumber);
}
-int ec_outframe_red(int idx)
+int ec_outframe_red(uint8 idx)
{
return ecx_outframe_red(&ecx_port, idx);
}
-int ec_inframe(int idx, int stacknumber)
+int ec_inframe(uint8 idx, int stacknumber)
{
return ecx_inframe(&ecx_port, idx, stacknumber);
}
-int ec_waitinframe(int idx, int timeout)
+int ec_waitinframe(uint8 idx, int timeout)
{
return ecx_waitinframe(&ecx_port, idx, timeout);
}
-int ec_srconfirm(int idx, int timeout)
+int ec_srconfirm(uint8 idx, int timeout)
{
return ecx_srconfirm(&ecx_port, idx, timeout);
}
/** temporary tx buffer length */
int txbuflength2;
/** last used frame index */
- int lastidx;
+ uint8 lastidx;
/** current redundancy state */
int redstate;
/** pointer to redundancy port and buffers */
int ec_setupnic(const char * ifname, int secondary);
int ec_closenic(void);
-void ec_setbufstat(int idx, int bufstat);
-int ec_getindex(void);
-int ec_outframe(int idx, int sock);
-int ec_outframe_red(int idx);
-int ec_waitinframe(int idx, int timeout);
-int ec_srconfirm(int idx,int timeout);
+void ec_setbufstat(uint8 idx, int bufstat);
+uint8 ec_getindex(void);
+int ec_outframe(uint8 idx, int sock);
+int ec_outframe_red(uint8 idx);
+int ec_waitinframe(uint8 idx, int timeout);
+int ec_srconfirm(uint8 idx,int timeout);
#endif
void ec_setupheader(void *p);
int ecx_setupnic(ecx_portt *port, const char * ifname, int secondary);
int ecx_closenic(ecx_portt *port);
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat);
-int ecx_getindex(ecx_portt *port);
-int ecx_outframe(ecx_portt *port, int idx, int sock);
-int ecx_outframe_red(ecx_portt *port, int idx);
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout);
-int ecx_srconfirm(ecx_portt *port, int idx,int timeout);
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat);
+uint8 ecx_getindex(ecx_portt *port);
+int ecx_outframe(ecx_portt *port, uint8 idx, int sock);
+int ecx_outframe_red(ecx_portt *port, uint8 idx);
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout);
+int ecx_srconfirm(ecx_portt *port, uint8 idx,int timeout);
#ifdef __cplusplus
}
* @param[in] port = port context struct
* @return new index.
*/
-int ecx_getindex(ecx_portt *port)
+uint8 ecx_getindex(ecx_portt *port)
{
- int idx;
- int cnt;
+ uint8 idx;
+ uint8 cnt;
mtx_lock (port->getindex_mutex);
* @param[in] idx = index in buffer array
* @param[in] bufstat = status to set
*/
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat)
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat)
{
port->rxbufstat[idx] = bufstat;
if (port->redstate != ECT_RED_NONE)
* @param[in] stacknumber = 0=Primary 1=Secondary stack
* @return socket send result
*/
-int ecx_outframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_outframe(ecx_portt *port, uint8 idx, int stacknumber)
{
int lp, rval;
ec_stackT *stack;
* @param[in] idx = index in tx buffer array
* @return socket send result
*/
-int ecx_outframe_red(ecx_portt *port, int idx)
+int ecx_outframe_red(ecx_portt *port, uint8 idx)
{
ec_comt *datagramP;
ec_etherheadert *ehp;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME or EC_OTHERFRAME.
*/
-int ecx_inframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_inframe(ecx_portt *port, uint8 idx, int stacknumber)
{
uint16 l;
int rval;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert timer)
+static int ecx_waitinframe_red(ecx_portt *port, uint8 idx, osal_timert timer)
{
int wkc = EC_NOFRAME;
int wkc2 = EC_NOFRAME;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout)
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout)
{
int wkc;
osal_timert timer;
* @param[in] timeout = timeout in us
* @return Workcounter or EC_NOFRAME
*/
-int ecx_srconfirm(ecx_portt *port, int idx, int timeout)
+int ecx_srconfirm(ecx_portt *port, uint8 idx, int timeout)
{
int wkc = EC_NOFRAME;
osal_timert timer;
return ecx_closenic(&ecx_port);
}
-int ec_getindex(void)
+uint8 ec_getindex(void)
{
return ecx_getindex(&ecx_port);
}
-void ec_setbufstat(int idx, int bufstat)
+void ec_setbufstat(uint8 idx, int bufstat)
{
ecx_setbufstat(&ecx_port, idx, bufstat);
}
-int ec_outframe(int idx, int stacknumber)
+int ec_outframe(uint8 idx, int stacknumber)
{
return ecx_outframe(&ecx_port, idx, stacknumber);
}
-int ec_outframe_red(int idx)
+int ec_outframe_red(uint8 idx)
{
return ecx_outframe_red(&ecx_port, idx);
}
-int ec_inframe(int idx, int stacknumber)
+int ec_inframe(uint8 idx, int stacknumber)
{
return ecx_inframe(&ecx_port, idx, stacknumber);
}
-int ec_waitinframe(int idx, int timeout)
+int ec_waitinframe(uint8 idx, int timeout)
{
return ecx_waitinframe(&ecx_port, idx, timeout);
}
-int ec_srconfirm(int idx, int timeout)
+int ec_srconfirm(uint8 idx, int timeout)
{
return ecx_srconfirm(&ecx_port, idx, timeout);
}
/** temporary tx buffer length */
int txbuflength2;
/** last used frame index */
- int lastidx;
+ uint8 lastidx;
/** current redundancy state */
int redstate;
/** pointer to redundancy port and buffers */
int ec_setupnic(const char * ifname, int secondary);
int ec_closenic(void);
-void ec_setbufstat(int idx, int bufstat);
-int ec_getindex(void);
-int ec_outframe(int idx, int stacknumber);
-int ec_outframe_red(int idx);
-int ec_waitinframe(int idx, int timeout);
-int ec_srconfirm(int idx,int timeout);
+void ec_setbufstat(uint8 idx, int bufstat);
+uint8 ec_getindex(void);
+int ec_outframe(uint8 idx, int stacknumber);
+int ec_outframe_red(uint8 idx);
+int ec_waitinframe(uint8 idx, int timeout);
+int ec_srconfirm(uint8 idx,int timeout);
#endif
void ec_setupheader(void *p);
int ecx_setupnic(ecx_portt *port, const char * ifname, int secondary);
int ecx_closenic(ecx_portt *port);
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat);
-int ecx_getindex(ecx_portt *port);
-int ecx_outframe(ecx_portt *port, int idx, int stacknumber);
-int ecx_outframe_red(ecx_portt *port, int idx);
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout);
-int ecx_srconfirm(ecx_portt *port, int idx,int timeout);
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat);
+uint8 ecx_getindex(ecx_portt *port);
+int ecx_outframe(ecx_portt *port, uint8 idx, int stacknumber);
+int ecx_outframe_red(ecx_portt *port, uint8 idx);
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout);
+int ecx_srconfirm(ecx_portt *port, uint8 idx,int timeout);
#endif
* @param[in] port = port context struct
* @return new index.
*/
-int ecx_getindex(ecx_portt *port)
+uint8 ecx_getindex(ecx_portt *port)
{
- int idx;
- int cnt;
+ uint8 idx;
+ uint8 cnt;
semTake(port->sem_get_index, WAIT_FOREVER);
* @param[in] idx = index in buffer array
* @param[in] bufstat = status to set
*/
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat)
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat)
{
port->rxbufstat[idx] = bufstat;
if (port->redstate != ECT_RED_NONE)
* @param[in] len = bytes to send
* @return driver send result
*/
-static int ec_outfram_send(ETHERCAT_PKT_DEV * pPktDev, int idx, void * buf, int len)
+static int ec_outfram_send(ETHERCAT_PKT_DEV * pPktDev, uint8 idx, void * buf, int len)
{
STATUS status = OK;
M_BLK_ID pPacket = NULL;
* @param[in] stacknumber = 0=Primary 1=Secondary stack
* @return socket send result
*/
-int ecx_outframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_outframe(ecx_portt *port, uint8 idx, int stacknumber)
{
int rval = 0;
ec_stackT *stack;
* @param[in] idx = index in tx buffer array
* @return socket send result
*/
-int ecx_outframe_red(ecx_portt *port, int idx)
+int ecx_outframe_red(ecx_portt *port, uint8 idx)
{
ec_comt *datagramP;
ec_etherheadert *ehp;
static int mux_rx_callback(void* pCookie, long type, M_BLK_ID pMblk, LL_HDR_INFO *llHdrInfo, void *muxUserArg)
{
BOOL ret = FALSE;
- int idxf;
+ uint8 idxf;
ec_comt *ecp;
ec_bufT * tempbuf;
ecx_portt * port;
* @param[in] timeout = timeout in us
* @return >0 if frame is available and read
*/
-static int ecx_recvpkt(ecx_portt *port, int idx, int stacknumber, M_BLK_ID * pMblk, int timeout)
+static int ecx_recvpkt(ecx_portt *port, uint8 idx, int stacknumber, M_BLK_ID * pMblk, int timeout)
{
int bytesrx = 0;
MSG_Q_ID msgQId;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME or EC_OTHERFRAME.
*/
-int ecx_inframe(ecx_portt *port, int idx, int stacknumber, int timeout)
+int ecx_inframe(ecx_portt *port, uint8 idx, int stacknumber, int timeout)
{
uint16 l;
int rval;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer, int timeout)
+static int ecx_waitinframe_red(ecx_portt *port, uint8 idx, osal_timert *timer, int timeout)
{
osal_timert timer2;
int wkc = EC_NOFRAME;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout)
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout)
{
int wkc;
osal_timert timer;
* @param[in] timeout = timeout in us
* @return Workcounter or EC_NOFRAME
*/
-int ecx_srconfirm(ecx_portt *port, int idx, int timeout)
+int ecx_srconfirm(ecx_portt *port, uint8 idx, int timeout)
{
int wkc = EC_NOFRAME;
osal_timert timer1, timer2;
return ecx_closenic(&ecx_port);
}
-int ec_getindex(void)
+uint8 ec_getindex(void)
{
return ecx_getindex(&ecx_port);
}
-void ec_setbufstat(int idx, int bufstat)
+void ec_setbufstat(uint8 idx, int bufstat)
{
ecx_setbufstat(&ecx_port, idx, bufstat);
}
-int ec_outframe(int idx, int stacknumber)
+int ec_outframe(uint8 idx, int stacknumber)
{
return ecx_outframe(&ecx_port, idx, stacknumber);
}
-int ec_outframe_red(int idx)
+int ec_outframe_red(uint8 idx)
{
return ecx_outframe_red(&ecx_port, idx);
}
-int ec_inframe(int idx, int stacknumber, int timeout)
+int ec_inframe(uint8 idx, int stacknumber, int timeout)
{
return ecx_inframe(&ecx_port, idx, stacknumber, timeout);
}
-int ec_waitinframe(int idx, int timeout)
+int ec_waitinframe(uint8 idx, int timeout)
{
return ecx_waitinframe(&ecx_port, idx, timeout);
}
-int ec_srconfirm(int idx, int timeout)
+int ec_srconfirm(uint8 idx, int timeout)
{
return ecx_srconfirm(&ecx_port, idx, timeout);
}
/** temporary tx buffer length */
int txbuflength2;
/** last used frame index */
- int lastidx;
+ uint8 lastidx;
/** current redundancy state */
int redstate;
/** pointer to redundancy port and buffers */
int ec_setupnic(const char * ifname, int secondary);
int ec_closenic(void);
-void ec_setbufstat(int idx, int bufstat);
-int ec_getindex(void);
-int ec_outframe(int idx, int sock);
-int ec_outframe_red(int idx);
-int ec_waitinframe(int idx, int timeout);
-int ec_srconfirm(int idx,int timeout);
+void ec_setbufstat(uint8 idx, int bufstat);
+uint8 ec_getindex(void);
+int ec_outframe(uint8 idx, int sock);
+int ec_outframe_red(uint8 idx);
+int ec_waitinframe(uint8 idx, int timeout);
+int ec_srconfirm(uint8 idx,int timeout);
#endif
void ec_setupheader(void *p);
int ecx_setupnic(ecx_portt *port, const char * ifname, int secondary);
int ecx_closenic(ecx_portt *port);
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat);
-int ecx_getindex(ecx_portt *port);
-int ecx_outframe(ecx_portt *port, int idx, int sock);
-int ecx_outframe_red(ecx_portt *port, int idx);
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout);
-int ecx_srconfirm(ecx_portt *port, int idx,int timeout);
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat);
+uint8 ecx_getindex(ecx_portt *port);
+int ecx_outframe(ecx_portt *port, uint8 idx, int sock);
+int ecx_outframe_red(ecx_portt *port, uint8 idx);
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout);
+int ecx_srconfirm(ecx_portt *port, uint8 idx,int timeout);
#ifdef __cplusplus
}
* @param[in] port = port context struct
* @return new index.
*/
-int ecx_getindex(ecx_portt *port)
+uint8 ecx_getindex(ecx_portt *port)
{
- int idx;
- int cnt;
+ uint8 idx;
+ uint8 cnt;
EnterCriticalSection(&(port->getindex_mutex));
* @param[in] idx = index in buffer array
* @param[in] bufstat = status to set
*/
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat)
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat)
{
port->rxbufstat[idx] = bufstat;
if (port->redstate != ECT_RED_NONE)
* @param[in] stacknumber = 0=Primary 1=Secondary stack
* @return socket send result
*/
-int ecx_outframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_outframe(ecx_portt *port, uint8 idx, int stacknumber)
{
int lp, rval;
ec_stackT *stack;
* @param[in] idx = index in tx buffer array
* @return socket send result
*/
-int ecx_outframe_red(ecx_portt *port, int idx)
+int ecx_outframe_red(ecx_portt *port, uint8 idx)
{
ec_comt *datagramP;
ec_etherheadert *ehp;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME or EC_OTHERFRAME.
*/
-int ecx_inframe(ecx_portt *port, int idx, int stacknumber)
+int ecx_inframe(ecx_portt *port, uint8 idx, int stacknumber)
{
uint16 l;
int rval;
- int idxf;
+ uint8 idxf;
ec_etherheadert *ehp;
ec_comt *ecp;
ec_stackT *stack;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer)
+static int ecx_waitinframe_red(ecx_portt *port, uint8 idx, osal_timert *timer)
{
osal_timert timer2;
int wkc = EC_NOFRAME;
* @return Workcounter if a frame is found with corresponding index, otherwise
* EC_NOFRAME.
*/
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout)
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout)
{
int wkc;
osal_timert timer;
* @param[in] timeout = timeout in us
* @return Workcounter or EC_NOFRAME
*/
-int ecx_srconfirm(ecx_portt *port, int idx, int timeout)
+int ecx_srconfirm(ecx_portt *port, uint8 idx, int timeout)
{
int wkc = EC_NOFRAME;
osal_timert timer1, timer2;
return ecx_closenic(&ecx_port);
}
-int ec_getindex(void)
+uint8 ec_getindex(void)
{
return ecx_getindex(&ecx_port);
}
-void ec_setbufstat(int idx, int bufstat)
+void ec_setbufstat(uint8 idx, int bufstat)
{
ecx_setbufstat(&ecx_port, idx, bufstat);
}
-int ec_outframe(int idx, int stacknumber)
+int ec_outframe(uint8 idx, int stacknumber)
{
return ecx_outframe(&ecx_port, idx, stacknumber);
}
-int ec_outframe_red(int idx)
+int ec_outframe_red(uint8 idx)
{
return ecx_outframe_red(&ecx_port, idx);
}
-int ec_inframe(int idx, int stacknumber)
+int ec_inframe(uint8 idx, int stacknumber)
{
return ecx_inframe(&ecx_port, idx, stacknumber);
}
-int ec_waitinframe(int idx, int timeout)
+int ec_waitinframe(uint8 idx, int timeout)
{
return ecx_waitinframe(&ecx_port, idx, timeout);
}
-int ec_srconfirm(int idx, int timeout)
+int ec_srconfirm(uint8 idx, int timeout)
{
return ecx_srconfirm(&ecx_port, idx, timeout);
}
/** temporary tx buffer length */
int txbuflength2;
/** last used frame index */
- int lastidx;
+ uint8 lastidx;
/** current redundancy state */
int redstate;
/** pointer to redundancy port and buffers */
int ec_setupnic(const char * ifname, int secondary);
int ec_closenic(void);
-void ec_setbufstat(int idx, int bufstat);
-int ec_getindex(void);
-int ec_outframe(int idx, int sock);
-int ec_outframe_red(int idx);
-int ec_waitinframe(int idx, int timeout);
-int ec_srconfirm(int idx,int timeout);
+void ec_setbufstat(uint8 idx, int bufstat);
+uint8 ec_getindex(void);
+int ec_outframe(uint8 idx, int sock);
+int ec_outframe_red(uint8 idx);
+int ec_waitinframe(uint8 idx, int timeout);
+int ec_srconfirm(uint8 idx,int timeout);
#endif
void ec_setupheader(void *p);
int ecx_setupnic(ecx_portt *port, const char * ifname, int secondary);
int ecx_closenic(ecx_portt *port);
-void ecx_setbufstat(ecx_portt *port, int idx, int bufstat);
-int ecx_getindex(ecx_portt *port);
-int ecx_outframe(ecx_portt *port, int idx, int sock);
-int ecx_outframe_red(ecx_portt *port, int idx);
-int ecx_waitinframe(ecx_portt *port, int idx, int timeout);
-int ecx_srconfirm(ecx_portt *port, int idx,int timeout);
+void ecx_setbufstat(ecx_portt *port, uint8 idx, int bufstat);
+uint8 ecx_getindex(ecx_portt *port);
+int ecx_outframe(ecx_portt *port, uint8 idx, int sock);
+int ecx_outframe_red(ecx_portt *port, uint8 idx);
+int ecx_waitinframe(ecx_portt *port, uint8 idx, int timeout);
+int ecx_srconfirm(ecx_portt *port, uint8 idx,int timeout);
#ifdef __cplusplus
}
* @param[in] data = databuffer to be copied in datagram
* @return Offset to data in rx frame, usefull to retrieve data after RX.
*/
-int ecx_adddatagram(ecx_portt *port, void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data)
+uint16 ecx_adddatagram(ecx_portt *port, void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data)
{
ec_comt *datagramP;
uint8 *frameP;
frameP = frame;
/* copy previous frame size */
- prevlength = port->txbuflength[idx];
+ prevlength = (uint16)port->txbuflength[idx];
datagramP = (ec_comt*)&frameP[ETH_HEADERSIZE];
/* add new datagram to ethernet frame size */
datagramP->elength = htoes( etohs(datagramP->elength) + EC_HEADERSIZE + length );
return ecx_setupdatagram (&ecx_port, frame, com, idx, ADP, ADO, length, data);
}
-int ec_adddatagram (void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data)
+uint16 ec_adddatagram (void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data)
{
return ecx_adddatagram (&ecx_port, frame, com, idx, more, ADP, ADO, length, data);
}
#endif
int ecx_setupdatagram(ecx_portt *port, void *frame, uint8 com, uint8 idx, uint16 ADP, uint16 ADO, uint16 length, void *data);
-int ecx_adddatagram(ecx_portt *port, void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data);
+uint16 ecx_adddatagram(ecx_portt *port, void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data);
int ecx_BWR(ecx_portt *port, uint16 ADP,uint16 ADO,uint16 length,void *data,int timeout);
int ecx_BRD(ecx_portt *port, uint16 ADP,uint16 ADO,uint16 length,void *data,int timeout);
int ecx_APRD(ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout);
#ifdef EC_VER1
int ec_setupdatagram(void *frame, uint8 com, uint8 idx, uint16 ADP, uint16 ADO, uint16 length, void *data);
-int ec_adddatagram(void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data);
+uint16 ec_adddatagram(void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data);
int ec_BWR(uint16 ADP,uint16 ADO,uint16 length,void *data,int timeout);
int ec_BRD(uint16 ADP,uint16 ADO,uint16 length,void *data,int timeout);
int ec_APRD(uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout);
/* get new mailbox count value, used as session handle */
cnt = ec_nextmbxcnt(context->slavelist[slave].mbx_cnt);
context->slavelist[slave].mbx_cnt = cnt;
- SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + (cnt << 4); /* CoE */
+ SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + MBX_HDR_SET_CNT(cnt); /* CoE */
SDOp->CANOpen = htoes(0x000 + (ECT_COES_SDOREQ << 12)); /* number 9bits service upper 4 bits (SDO request) */
if (CA)
{
SDOp->MbxHeader.priority = 0x00;
cnt = ec_nextmbxcnt(context->slavelist[slave].mbx_cnt);
context->slavelist[slave].mbx_cnt = cnt;
- SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + (cnt << 4); /* CoE */
+ SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + MBX_HDR_SET_CNT(cnt); /* CoE */
SDOp->CANOpen = htoes(0x000 + (ECT_COES_SDOREQ << 12)); /* number 9bits service upper 4 bits (SDO request) */
SDOp->Command = ECT_SDO_SEG_UP_REQ + toggle; /* segment upload request */
SDOp->Index = htoes(index);
boolean CA, int psize, void *p, int Timeout)
{
ec_SDOt *SDOp, *aSDOp;
- int wkc, maxdata;
+ int wkc, maxdata, framedatasize;
ec_mbxbuft MbxIn, MbxOut;
uint8 cnt, toggle;
- uint16 framedatasize;
boolean NotLast;
uint8 *hp;
/* get new mailbox counter, used for session handle */
cnt = ec_nextmbxcnt(context->slavelist[Slave].mbx_cnt);
context->slavelist[Slave].mbx_cnt = cnt;
- SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + (cnt << 4); /* CoE */
+ SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + MBX_HDR_SET_CNT(cnt); /* CoE */
SDOp->CANOpen = htoes(0x000 + (ECT_COES_SDOREQ << 12)); /* number 9bits service upper 4 bits */
SDOp->Command = ECT_SDO_DOWN_EXP | (((4 - psize) << 2) & 0x0c); /* expedited SDO download transfer */
SDOp->Index = htoes(Index);
framedatasize = maxdata; /* segmented transfer needed */
NotLast = TRUE;
}
- SDOp->MbxHeader.length = htoes(0x0a + framedatasize);
+ SDOp->MbxHeader.length = htoes((uint16)(0x0a + framedatasize));
SDOp->MbxHeader.address = htoes(0x0000);
SDOp->MbxHeader.priority = 0x00;
/* get new mailbox counter, used for session handle */
cnt = ec_nextmbxcnt(context->slavelist[Slave].mbx_cnt);
context->slavelist[Slave].mbx_cnt = cnt;
- SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + (cnt << 4); /* CoE */
+ SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + MBX_HDR_SET_CNT(cnt); /* CoE */
SDOp->CANOpen = htoes(0x000 + (ECT_COES_SDOREQ << 12)); /* number 9bits service upper 4 bits */
if (CA)
{
if (!NotLast && (framedatasize < 7))
{
SDOp->MbxHeader.length = htoes(0x0a); /* minimum size */
- SDOp->Command = 0x01 + ((7 - framedatasize) << 1); /* last segment reduced octets */
+ SDOp->Command = (uint8)(0x01 + ((7 - framedatasize) << 1)); /* last segment reduced octets */
}
else
{
- SDOp->MbxHeader.length = htoes(framedatasize + 3); /* data + 2 CoE + 1 SDO */
+ SDOp->MbxHeader.length = htoes((uint16)(framedatasize + 3)); /* data + 2 CoE + 1 SDO */
}
SDOp->MbxHeader.address = htoes(0x0000);
SDOp->MbxHeader.priority = 0x00;
/* get new mailbox counter value */
cnt = ec_nextmbxcnt(context->slavelist[Slave].mbx_cnt);
context->slavelist[Slave].mbx_cnt = cnt;
- SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + (cnt << 4); /* CoE */
+ SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + MBX_HDR_SET_CNT(cnt); /* CoE */
SDOp->CANOpen = htoes(0x000 + (ECT_COES_SDOREQ << 12)); /* number 9bits service upper 4 bits (SDO request) */
SDOp->Command = SDOp->Command + toggle; /* add toggle bit to command byte */
/* copy parameter data to mailbox */
int ecx_RxPDO(ecx_contextt *context, uint16 Slave, uint16 RxPDOnumber, int psize, void *p)
{
ec_SDOt *SDOp;
- int wkc, maxdata;
+ int wkc, maxdata, framedatasize;
ec_mbxbuft MbxIn, MbxOut;
uint8 cnt;
- uint16 framedatasize;
ec_clearmbx(&MbxIn);
/* Empty slave out mailbox if something is in. Timeout set to 0 */
{
framedatasize = maxdata; /* limit transfer */
}
- SDOp->MbxHeader.length = htoes(0x02 + framedatasize);
+ SDOp->MbxHeader.length = htoes((uint16)(0x02 + framedatasize));
SDOp->MbxHeader.address = htoes(0x0000);
SDOp->MbxHeader.priority = 0x00;
/* get new mailbox counter, used for session handle */
cnt = ec_nextmbxcnt(context->slavelist[Slave].mbx_cnt);
context->slavelist[Slave].mbx_cnt = cnt;
- SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + (cnt << 4); /* CoE */
+ SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + MBX_HDR_SET_CNT(cnt); /* CoE */
SDOp->CANOpen = htoes((RxPDOnumber & 0x01ff) + (ECT_COES_RXPDO << 12)); /* number 9bits service upper 4 bits */
/* copy PDO data to mailbox */
memcpy(&SDOp->Command, p, framedatasize);
/* get new mailbox counter, used for session handle */
cnt = ec_nextmbxcnt(context->slavelist[slave].mbx_cnt);
context->slavelist[slave].mbx_cnt = cnt;
- SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + (cnt << 4); /* CoE */
+ SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + MBX_HDR_SET_CNT(cnt); /* CoE */
SDOp->CANOpen = htoes((TxPDOnumber & 0x01ff) + (ECT_COES_TXPDO_RR << 12)); /* number 9bits service upper 4 bits */
wkc = ecx_mbxsend(context, slave, (ec_mbxbuft *)&MbxOut, EC_TIMEOUTTXM);
if (wkc > 0)
* @param[in] PDOassign = PDO assign object
* @return total bitlength of PDO assign
*/
-int ecx_readPDOassign(ecx_contextt *context, uint16 Slave, uint16 PDOassign)
+uint32 ecx_readPDOassign(ecx_contextt *context, uint16 Slave, uint16 PDOassign)
{
uint16 idxloop, nidx, subidxloop, rdat, idx, subidx;
uint8 subcnt;
- int wkc, bsize = 0, rdl;
+ int wkc, rdl;
int32 rdat2;
+ uint32 bsize = 0;
rdl = sizeof(rdat); rdat = 0;
/* read PDO assign subindex 0 ( = number of PDO's) */
* @param[in] PDOassign = PDO assign object
* @return total bitlength of PDO assign
*/
-int ecx_readPDOassignCA(ecx_contextt *context, uint16 Slave, int Thread_n,
+uint32 ecx_readPDOassignCA(ecx_contextt *context, uint16 Slave, int Thread_n,
uint16 PDOassign)
{
uint16 idxloop, nidx, subidxloop, idx, subidx;
- int wkc, bsize = 0, rdl;
+ int wkc, rdl;
+ uint32 bsize = 0;
/* find maximum size of PDOassign buffer */
rdl = sizeof(ec_PDOassignt);
* @param[out] Isize = Size in bits of input mapping (txPDO) found
* @return >0 if mapping successful.
*/
-int ecx_readPDOmap(ecx_contextt *context, uint16 Slave, int *Osize, int *Isize)
+int ecx_readPDOmap(ecx_contextt *context, uint16 Slave, uint32 *Osize, uint32 *Isize)
{
int wkc, rdl;
int retVal = 0;
uint8 nSM, iSM, tSM;
- int Tsize;
+ uint32 Tsize;
uint8 SMt_bug_add;
*Isize = 0;
/* if a mapping is found */
if (Tsize)
{
- context->slavelist[Slave].SM[iSM].SMlength = htoes((Tsize + 7) / 8);
+ context->slavelist[Slave].SM[iSM].SMlength = htoes((uint16)((Tsize + 7) / 8));
if (tSM == 3)
{
/* we are doing outputs */
* @param[out] Isize = Size in bits of input mapping (txPDO) found
* @return >0 if mapping successful.
*/
-int ecx_readPDOmapCA(ecx_contextt *context, uint16 Slave, int Thread_n, int *Osize, int *Isize)
+int ecx_readPDOmapCA(ecx_contextt *context, uint16 Slave, int Thread_n, uint32 *Osize, uint32 *Isize)
{
int wkc, rdl;
int retVal = 0;
uint8 nSM, iSM, tSM;
- int Tsize;
+ uint32 Tsize;
uint8 SMt_bug_add;
*Isize = 0;
/* if a mapping is found */
if (Tsize)
{
- context->slavelist[Slave].SM[iSM].SMlength = htoes((Tsize + 7) / 8);
+ context->slavelist[Slave].SM[iSM].SMlength = htoes((uint16)((Tsize + 7) / 8));
if (tSM == 3)
{
/* we are doing outputs */
/* Get new mailbox counter value */
cnt = ec_nextmbxcnt(context->slavelist[Slave].mbx_cnt);
context->slavelist[Slave].mbx_cnt = cnt;
- SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + (cnt << 4); /* CoE */
+ SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + MBX_HDR_SET_CNT(cnt); /* CoE */
SDOp->CANOpen = htoes(0x000 + (ECT_COES_SDOINFO << 12)); /* number 9bits service upper 4 bits */
SDOp->Opcode = ECT_GET_ODLIST_REQ; /* get object description list request */
SDOp->Reserved = 0;
/* Get new mailbox counter value */
cnt = ec_nextmbxcnt(context->slavelist[Slave].mbx_cnt);
context->slavelist[Slave].mbx_cnt = cnt;
- SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + (cnt << 4); /* CoE */
+ SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + MBX_HDR_SET_CNT(cnt); /* CoE */
SDOp->CANOpen = htoes(0x000 + (ECT_COES_SDOINFO << 12)); /* number 9bits service upper 4 bits */
SDOp->Opcode = ECT_GET_OD_REQ; /* get object description request */
SDOp->Reserved = 0;
/* Get new mailbox counter value */
cnt = ec_nextmbxcnt(context->slavelist[Slave].mbx_cnt);
context->slavelist[Slave].mbx_cnt = cnt;
- SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + (cnt << 4); /* CoE */
+ SDOp->MbxHeader.mbxtype = ECT_MBXT_COE + MBX_HDR_SET_CNT(cnt); /* CoE */
SDOp->CANOpen = htoes(0x000 + (ECT_COES_SDOINFO << 12)); /* number 9bits service upper 4 bits */
SDOp->Opcode = ECT_GET_OE_REQ; /* get object entry description request */
SDOp->Reserved = 0;
* @param[in] PDOassign = PDO assign object
* @return total bitlength of PDO assign
*/
-int ec_readPDOassign(uint16 Slave, uint16 PDOassign)
+uint32 ec_readPDOassign(uint16 Slave, uint16 PDOassign)
{
return ecx_readPDOassign(&ecx_context, Slave, PDOassign);
}
* @return total bitlength of PDO assign
* @see ecx_readPDOmap
*/
-int ec_readPDOassignCA(uint16 Slave, uint16 PDOassign, int Thread_n)
+uint32 ec_readPDOassignCA(uint16 Slave, uint16 PDOassign, int Thread_n)
{
return ecx_readPDOassignCA(&ecx_context, Slave, Thread_n, PDOassign);
}
* @param[out] Isize = Size in bits of input mapping (txPDO) found
* @return >0 if mapping succesful.
*/
-int ec_readPDOmap(uint16 Slave, int *Osize, int *Isize)
+int ec_readPDOmap(uint16 Slave, uint32 *Osize, uint32 *Isize)
{
return ecx_readPDOmap(&ecx_context, Slave, Osize, Isize);
}
* @return >0 if mapping succesful.
* @see ecx_readPDOmap ec_readPDOmapCA
*/
-int ec_readPDOmapCA(uint16 Slave, int Thread_n, int *Osize, int *Isize)
+int ec_readPDOmapCA(uint16 Slave, int Thread_n, uint32 *Osize, uint32 *Isize)
{
return ecx_readPDOmapCA(&ecx_context, Slave, Thread_n, Osize, Isize);
}
boolean CA, int psize, void *p, int Timeout);
int ec_RxPDO(uint16 Slave, uint16 RxPDOnumber , int psize, void *p);
int ec_TxPDO(uint16 slave, uint16 TxPDOnumber , int *psize, void *p, int timeout);
-int ec_readPDOmap(uint16 Slave, int *Osize, int *Isize);
-int ec_readPDOmapCA(uint16 Slave, int Thread_n, int *Osize, int *Isize);
+int ec_readPDOmap(uint16 Slave, uint32 *Osize, uint32 *Isize);
+int ec_readPDOmapCA(uint16 Slave, int Thread_n, uint32 *Osize, uint32 *Isize);
int ec_readODlist(uint16 Slave, ec_ODlistt *pODlist);
int ec_readODdescription(uint16 Item, ec_ODlistt *pODlist);
int ec_readOEsingle(uint16 Item, uint8 SubI, ec_ODlistt *pODlist, ec_OElistt *pOElist);
boolean CA, int psize, void *p, int Timeout);
int ecx_RxPDO(ecx_contextt *context, uint16 Slave, uint16 RxPDOnumber , int psize, void *p);
int ecx_TxPDO(ecx_contextt *context, uint16 slave, uint16 TxPDOnumber , int *psize, void *p, int timeout);
-int ecx_readPDOmap(ecx_contextt *context, uint16 Slave, int *Osize, int *Isize);
-int ecx_readPDOmapCA(ecx_contextt *context, uint16 Slave, int Thread_n, int *Osize, int *Isize);
+int ecx_readPDOmap(ecx_contextt *context, uint16 Slave, uint32 *Osize, uint32 *Isize);
+int ecx_readPDOmapCA(ecx_contextt *context, uint16 Slave, int Thread_n, uint32 *Osize, uint32 *Isize);
int ecx_readODlist(ecx_contextt *context, uint16 Slave, ec_ODlistt *pODlist);
int ecx_readODdescription(ecx_contextt *context, uint16 Item, ec_ODlistt *pODlist);
int ecx_readOEsingle(ecx_contextt *context, uint16 Item, uint8 SubI, ec_ODlistt *pODlist, ec_OElistt *pOElist);
context->slavelist[slave].SM[1].SMlength = htoes(context->slavelist[slave].mbx_rl);
context->slavelist[slave].SM[1].SMflags = htoel(EC_DEFAULTMBXSM1);
eedat = ecx_readeeprom2(context, slave, EC_TIMEOUTEEP);
- context->slavelist[slave].mbx_proto = etohl(eedat);
+ context->slavelist[slave].mbx_proto = (uint16)etohl(eedat);
}
cindex = 0;
/* use configuration table ? */
/* If slave has SII mapping and same slave ID done before, use previous mapping.
* This is safe because SII mapping is constant for same slave ID.
*/
-static int ecx_lookup_mapping(ecx_contextt *context, uint16 slave, int *Osize, int *Isize)
+static int ecx_lookup_mapping(ecx_contextt *context, uint16 slave, uint32 *Osize, uint32 *Isize)
{
int i, nSM;
if ((slave > 1) && (*(context->slavecount) > 0))
}
*Osize = context->slavelist[i].Obits;
*Isize = context->slavelist[i].Ibits;
- context->slavelist[slave].Obits = *Osize;
- context->slavelist[slave].Ibits = *Isize;
+ context->slavelist[slave].Obits = (uint16)*Osize;
+ context->slavelist[slave].Ibits = (uint16)*Isize;
EC_PRINT("Copy mapping slave %d from %d.\n", slave, i);
return 1;
}
static int ecx_map_coe_soe(ecx_contextt *context, uint16 slave, int thread_n)
{
- int Isize, Osize;
+ uint32 Isize, Osize;
int rval;
ecx_statecheck(context, slave, EC_STATE_PRE_OP, EC_TIMEOUTSTATE); /* check state change pre-op */
/* read PDO mapping via CoE */
rval = ecx_readPDOmap(context, slave, &Osize, &Isize);
}
- EC_PRINT(" CoE Osize:%d Isize:%d\n", Osize, Isize);
+ EC_PRINT(" CoE Osize:%u Isize:%u\n", Osize, Isize);
}
if ((!Isize && !Osize) && (context->slavelist[slave].mbx_proto & ECT_MBXPROT_SOE)) /* has SoE */
{
/* read AT / MDT mapping via SoE */
rval = ecx_readIDNmap(context, slave, &Osize, &Isize);
- context->slavelist[slave].SM[2].SMlength = htoes((Osize + 7) / 8);
- context->slavelist[slave].SM[3].SMlength = htoes((Isize + 7) / 8);
- EC_PRINT(" SoE Osize:%d Isize:%d\n", Osize, Isize);
+ context->slavelist[slave].SM[2].SMlength = htoes((uint16)((Osize + 7) / 8));
+ context->slavelist[slave].SM[3].SMlength = htoes((uint16)((Isize + 7) / 8));
+ EC_PRINT(" SoE Osize:%u Isize:%u\n", Osize, Isize);
}
- context->slavelist[slave].Obits = Osize;
- context->slavelist[slave].Ibits = Isize;
+ context->slavelist[slave].Obits = (uint16)Osize;
+ context->slavelist[slave].Ibits = (uint16)Isize;
}
return 1;
static int ecx_map_sii(ecx_contextt *context, uint16 slave)
{
- int Isize, Osize;
+ uint32 Isize, Osize;
int nSM;
ec_eepromPDOt eepPDO;
if (!Isize && !Osize) /* find PDO mapping by SII */
{
memset(&eepPDO, 0, sizeof(eepPDO));
- Isize = (int)ecx_siiPDO(context, slave, &eepPDO, 0);
- EC_PRINT(" SII Isize:%d\n", Isize);
+ Isize = ecx_siiPDO(context, slave, &eepPDO, 0);
+ EC_PRINT(" SII Isize:%u\n", Isize);
for( nSM=0 ; nSM < EC_MAXSM ; nSM++ )
{
if (eepPDO.SMbitsize[nSM] > 0)
EC_PRINT(" SM%d length %d\n", nSM, eepPDO.SMbitsize[nSM]);
}
}
- Osize = (int)ecx_siiPDO(context, slave, &eepPDO, 1);
- EC_PRINT(" SII Osize:%d\n", Osize);
+ Osize = ecx_siiPDO(context, slave, &eepPDO, 1);
+ EC_PRINT(" SII Osize:%u\n", Osize);
for( nSM=0 ; nSM < EC_MAXSM ; nSM++ )
{
if (eepPDO.SMbitsize[nSM] > 0)
}
}
}
- context->slavelist[slave].Obits = Osize;
- context->slavelist[slave].Ibits = Isize;
+ context->slavelist[slave].Obits = (uint16)Osize;
+ context->slavelist[slave].Ibits = (uint16)Isize;
EC_PRINT(" ISIZE:%d %d OSIZE:%d\n",
context->slavelist[slave].Ibits, Isize,context->slavelist[slave].Obits);
uint8 group, int16 slave, uint32 * LogAddr, uint8 * BitPos)
{
int BitCount = 0;
- int ByteCount = 0;
- int FMMUsize = 0;
int FMMUdone = 0;
int AddToInputsWKC = 0;
+ uint16 ByteCount = 0;
+ uint16 FMMUsize = 0;
uint8 SMc = 0;
uint16 EndAddr;
uint16 SMlength;
*LogAddr += 1;
*BitPos -= 8;
}
- FMMUsize = *LogAddr - etohl(context->slavelist[slave].FMMU[FMMUc].LogStart) + 1;
+ FMMUsize = (uint16)(*LogAddr - etohl(context->slavelist[slave].FMMU[FMMUc].LogStart) + 1);
context->slavelist[slave].FMMU[FMMUc].LogLength = htoes(FMMUsize);
context->slavelist[slave].FMMU[FMMUc].LogEndbit = *BitPos;
*BitPos += 1;
FMMUsize = ByteCount;
if ((FMMUsize + FMMUdone)> (int)context->slavelist[slave].Ibytes)
{
- FMMUsize = context->slavelist[slave].Ibytes - FMMUdone;
+ FMMUsize = (uint16)(context->slavelist[slave].Ibytes - FMMUdone);
}
*LogAddr += FMMUsize;
context->slavelist[slave].FMMU[FMMUc].LogLength = htoes(FMMUsize);
uint8 group, int16 slave, uint32 * LogAddr, uint8 * BitPos)
{
int BitCount = 0;
- int ByteCount = 0;
- int FMMUsize = 0;
int FMMUdone = 0;
int AddToOutputsWKC = 0;
+ uint16 ByteCount = 0;
+ uint16 FMMUsize = 0;
uint8 SMc = 0;
uint16 EndAddr;
uint16 SMlength;
*LogAddr += 1;
*BitPos -= 8;
}
- FMMUsize = *LogAddr - etohl(context->slavelist[slave].FMMU[FMMUc].LogStart) + 1;
+ FMMUsize = (uint16)(*LogAddr - etohl(context->slavelist[slave].FMMU[FMMUc].LogStart) + 1);
context->slavelist[slave].FMMU[FMMUc].LogLength = htoes(FMMUsize);
context->slavelist[slave].FMMU[FMMUc].LogEndbit = *BitPos;
*BitPos += 1;
FMMUsize = ByteCount;
if ((FMMUsize + FMMUdone)> (int)context->slavelist[slave].Obytes)
{
- FMMUsize = context->slavelist[slave].Obytes - FMMUdone;
+ FMMUsize = (uint16)(context->slavelist[slave].Obytes - FMMUdone);
}
*LogAddr += FMMUsize;
context->slavelist[slave].FMMU[FMMUc].LogLength = htoes(FMMUsize);
context->grouplist[group].Obytes = LogAddr - context->grouplist[group].logstartaddr;
context->grouplist[group].nsegments = currentsegment + 1;
context->grouplist[group].Isegment = currentsegment;
- context->grouplist[group].Ioffset = segmentsize;
+ context->grouplist[group].Ioffset = (uint16)segmentsize;
if (!group)
{
context->slavelist[0].outputs = pIOmap;
cnt = ec_nextmbxcnt(context->slavelist[slave].mbx_cnt);
context->slavelist[slave].mbx_cnt = cnt;
- EOEp->mbxheader.mbxtype = ECT_MBXT_EOE + (cnt << 4); /* EoE */
+ EOEp->mbxheader.mbxtype = ECT_MBXT_EOE + MBX_HDR_SET_CNT(cnt); /* EoE */
- EOEp->frameinfo1 = htoes(EOE_HDR_FRAME_TYPE_SET(EOE_INIT_REQ) |
+ EOEp->frameinfo1 = htoes(EOE_HDR_FRAME_TYPE_SET(EOE_INIT_REQ) |
EOE_HDR_FRAME_PORT_SET(port) |
EOE_HDR_LAST_FRAGMENT);
EOEp->frameinfo2 = 0;
cnt = ec_nextmbxcnt(context->slavelist[slave].mbx_cnt);
context->slavelist[slave].mbx_cnt = cnt;
- EOEp->mbxheader.mbxtype = ECT_MBXT_EOE + (cnt << 4); /* EoE */
+ EOEp->mbxheader.mbxtype = ECT_MBXT_EOE + MBX_HDR_SET_CNT(cnt); /* EoE */
- EOEp->frameinfo1 = htoes(EOE_HDR_FRAME_TYPE_SET(EOE_GET_IP_PARAM_REQ) |
+ EOEp->frameinfo1 = htoes(EOE_HDR_FRAME_TYPE_SET(EOE_GET_IP_PARAM_REQ) |
EOE_HDR_FRAME_PORT_SET(port) |
EOE_HDR_LAST_FRAGMENT);
EOEp->frameinfo2 = 0;
ec_EOEt *EOEp;
ec_mbxbuft MbxOut;
uint16 frameinfo1, frameinfo2;
- uint16 txframesize, txframeoffset;
uint8 cnt, txfragmentno;
boolean NotLast;
- int wkc, maxdata;
+ int wkc, maxdata, txframesize, txframeoffset;
const uint8 * buf = p;
static uint8_t txframeno = 0;
cnt = ec_nextmbxcnt(context->slavelist[slave].mbx_cnt);
context->slavelist[slave].mbx_cnt = cnt;
- EOEp->mbxheader.length = htoes(4 + txframesize); /* no timestamp */
- EOEp->mbxheader.mbxtype = ECT_MBXT_EOE + (cnt << 4); /* EoE */
+ EOEp->mbxheader.length = htoes((uint16)(4 + txframesize)); /* no timestamp */
+ EOEp->mbxheader.mbxtype = ECT_MBXT_EOE + MBX_HDR_SET_CNT(cnt); /* EoE */
EOEp->frameinfo1 = htoes(frameinfo1);
EOEp->frameinfo2 = htoes(frameinfo2);
{
ec_EOEt *aEOEp;
ec_mbxbuft MbxIn;
- uint16 frameinfo1, frameinfo2, rxframesize, rxframeoffset, eoedatasize;
+ uint16 frameinfo1, frameinfo2;
uint8 rxfragmentno, rxframeno;
boolean NotLast;
- int wkc, buffersize;
+ int wkc, buffersize, rxframesize, rxframeoffset, eoedatasize;
uint8 * buf = p;
ec_clearmbx(&MbxIn);
/* Is it a new frame?*/
if (*rxfragmentno == 0)
{
- *rxframesize = (EOE_HDR_FRAME_OFFSET_GET(frameinfo2) << 5);
+ *rxframesize = (uint16)(EOE_HDR_FRAME_OFFSET_GET(frameinfo2) << 5);
*rxframeoffset = 0;
*rxframeno = EOE_HDR_FRAME_NO_GET(frameinfo2);
}
#include <ethercattype.h>
+/* use maximum size for EOE mailbox data */
+#define EC_MAXEOEDATA EC_MAXMBX
+
/** DNS length according to ETG 1000.6 */
#define EOE_DNS_NAME_LENGTH 32
/** Ethernet address length not including VLAN */
#define EOE_HDR_FRAME_TYPE_GET(x) (((x) >> 0) & 0xF)
#define EOE_HDR_FRAME_PORT_OFFSET 4
#define EOE_HDR_FRAME_PORT (0xF << 4)
-#define EOE_HDR_FRAME_PORT_SET(x) (((x) & 0xF) << 4)
+#define EOE_HDR_FRAME_PORT_SET(x) ((uint16)(((x) & 0xF) << 4))
#define EOE_HDR_FRAME_PORT_GET(x) (((x) >> 4) & 0xF)
#define EOE_HDR_LAST_FRAGMENT_OFFSET 8
#define EOE_HDR_LAST_FRAGMENT (0x1 << 8)
/** Header frame info 2 */
#define EOE_HDR_FRAG_NO_OFFSET 0
#define EOE_HDR_FRAG_NO (0x3F << 0)
-#define EOE_HDR_FRAG_NO_SET(x) (((x) & 0x3F) << 0)
+#define EOE_HDR_FRAG_NO_SET(x) ((uint16)(((x) & 0x3F) << 0))
#define EOE_HDR_FRAG_NO_GET(x) (((x) >> 0) & 0x3F)
#define EOE_HDR_FRAME_OFFSET_OFFSET 6
#define EOE_HDR_FRAME_OFFSET (0x3F << 6)
-#define EOE_HDR_FRAME_OFFSET_SET(x) (((x) & 0x3F) << 6)
+#define EOE_HDR_FRAME_OFFSET_SET(x) ((uint16)(((x) & 0x3F) << 6))
#define EOE_HDR_FRAME_OFFSET_GET(x) (((x) >> 6) & 0x3F)
#define EOE_HDR_FRAME_NO_OFFSET 12
#define EOE_HDR_FRAME_NO (0xF << 12)
-#define EOE_HDR_FRAME_NO_SET(x) (((x) & 0xF) << 12)
+#define EOE_HDR_FRAME_NO_SET(x) ((uint16)(((x) & 0xF) << 12))
#define EOE_HDR_FRAME_NO_GET(x) (((x) >> 12) & 0xF)
/** EOE param */
uint16_t frameinfo2;
uint16_t result;
};
- uint8 data[0];
+ uint8 data[EC_MAXEOEDATA];
} ec_EOEt;
PACKED_END
/* get new mailbox count value, used as session handle */
cnt = ec_nextmbxcnt(context->slavelist[slave].mbx_cnt);
context->slavelist[slave].mbx_cnt = cnt;
- FOEp->MbxHeader.mbxtype = ECT_MBXT_FOE + (cnt << 4); /* FoE */
+ FOEp->MbxHeader.mbxtype = ECT_MBXT_FOE + MBX_HDR_SET_CNT(cnt); /* FoE */
FOEp->OpCode = ECT_FOE_READ;
FOEp->Password = htoel(password);
/* copy filename in mailbox */
/* get new mailbox count value */
cnt = ec_nextmbxcnt(context->slavelist[slave].mbx_cnt);
context->slavelist[slave].mbx_cnt = cnt;
- FOEp->MbxHeader.mbxtype = ECT_MBXT_FOE + (cnt << 4); /* FoE */
+ FOEp->MbxHeader.mbxtype = ECT_MBXT_FOE + MBX_HDR_SET_CNT(cnt); /* FoE */
FOEp->OpCode = ECT_FOE_ACK;
FOEp->PacketNumber = htoel(packetnumber);
/* send FoE ack to slave */
/* get new mailbox count value, used as session handle */
cnt = ec_nextmbxcnt(context->slavelist[slave].mbx_cnt);
context->slavelist[slave].mbx_cnt = cnt;
- FOEp->MbxHeader.mbxtype = ECT_MBXT_FOE + (cnt << 4); /* FoE */
+ FOEp->MbxHeader.mbxtype = ECT_MBXT_FOE + MBX_HDR_SET_CNT(cnt); /* FoE */
FOEp->OpCode = ECT_FOE_WRITE;
FOEp->Password = htoel(password);
/* copy filename in mailbox */
{
dofinalzero = TRUE;
}
- FOEp->MbxHeader.length = htoes(0x0006 + segmentdata);
+ FOEp->MbxHeader.length = htoes((uint16)(0x0006 + segmentdata));
FOEp->MbxHeader.address = htoes(0x0000);
FOEp->MbxHeader.priority = 0x00;
/* get new mailbox count value */
cnt = ec_nextmbxcnt(context->slavelist[slave].mbx_cnt);
context->slavelist[slave].mbx_cnt = cnt;
- FOEp->MbxHeader.mbxtype = ECT_MBXT_FOE + (cnt << 4); /* FoE */
+ FOEp->MbxHeader.mbxtype = ECT_MBXT_FOE + MBX_HDR_SET_CNT(cnt); /* FoE */
FOEp->OpCode = ECT_FOE_DATA;
sendpacket++;
FOEp->PacketNumber = htoel(sendpacket);
if (address < EC_MAXEEPBUF)
{
mapw = address >> 5;
- mapb = address - (mapw << 5);
+ mapb = (uint16)(address - (mapw << 5));
if (context->esimap[mapw] & (uint32)(1 << mapb))
{
/* byte is already in buffer */
}
/* find bitmap location */
mapw = eadr >> 4;
- mapb = (eadr << 1) - (mapw << 5);
+ mapb = (uint16)((eadr << 1) - (mapw << 5));
for(lp = 0 ; lp < cnt ; lp++)
{
/* set bitmap for each byte that is read */
a = SM->Startpos;
w = ecx_siigetbyte(context, slave, a++);
w += (ecx_siigetbyte(context, slave, a++) << 8);
- SM->nSM = (w / 4);
+ SM->nSM = (uint8)(w / 4);
SM->PhStart = ecx_siigetbyte(context, slave, a++);
SM->PhStart += (ecx_siigetbyte(context, slave, a++) << 8);
SM->Plength = ecx_siigetbyte(context, slave, a++);
* @param[in] t = 0=RXPDO 1=TXPDO
* @return mapping size in bits of PDO
*/
-int ecx_siiPDO(ecx_contextt *context, uint16 slave, ec_eepromPDOt* PDO, uint8 t)
+uint32 ecx_siiPDO(ecx_contextt *context, uint16 slave, ec_eepromPDOt* PDO, uint8 t)
{
uint16 a , w, c, e, er, Size;
uint8 eectl = context->slavelist[slave].eep_pdi;
int wkc;
uint8 idx;
ecx_portt *port;
- int sldatapos[MAX_FPRD_MULTI];
+ uint16 sldatapos[MAX_FPRD_MULTI];
int slcnt;
port = context->port;
fslave = 1;
do
{
- lslave = *(context->slavecount);
+ lslave = (uint16)*(context->slavecount);
if ((lslave - fslave) >= MAX_FPRD_MULTI)
{
lslave = fslave + MAX_FPRD_MULTI - 1;
*/
void ecx_esidump(ecx_contextt *context, uint16 slave, uint8 *esibuf)
{
- int address, incr;
- uint16 configadr;
+ uint16 configadr, address, incr;
uint64 *p64;
uint16 *p16;
uint64 edat;
uint16 ecx_eeprom_waitnotbusyAP(ecx_contextt *context, uint16 aiadr,uint16 *estat, int timeout)
{
- int wkc, cnt = 0, retval = 0;
+ int wkc, cnt = 0;
+ uint16 retval = 0;
osal_timert timer;
osal_timer_start(&timer, timeout);
uint16 ecx_eeprom_waitnotbusyFP(ecx_contextt *context, uint16 configadr,uint16 *estat, int timeout)
{
- int wkc, cnt = 0, retval = 0;
+ int wkc, cnt = 0;
+ uint16 retval = 0;
osal_timert timer;
osal_timer_start(&timer, timeout);
{
uint32 LogAdr;
uint16 w1, w2;
- int length, sublength;
+ int length;
+ uint16 sublength;
uint8 idx;
int wkc;
uint8* data;
{
if(currentsegment == context->grouplist[group].Isegment)
{
- sublength = context->grouplist[group].IOsegment[currentsegment++] - context->grouplist[group].Ioffset;
+ sublength = (uint16)(context->grouplist[group].IOsegment[currentsegment++] - context->grouplist[group].Ioffset);
}
else
{
- sublength = context->grouplist[group].IOsegment[currentsegment++];
+ sublength = (uint16)context->grouplist[group].IOsegment[currentsegment++];
}
/* get new index */
idx = ecx_getindex(context->port);
/* segment transfer if needed */
do
{
- sublength = context->grouplist[group].IOsegment[currentsegment++];
+ sublength = (uint16)context->grouplist[group].IOsegment[currentsegment++];
if((length - sublength) < 0)
{
- sublength = length;
+ sublength = (uint16)length;
}
/* get new index */
idx = ecx_getindex(context->port);
/* segment transfer if needed */
do
{
- sublength = context->grouplist[group].IOsegment[currentsegment++];
+ sublength = (uint16)context->grouplist[group].IOsegment[currentsegment++];
/* get new index */
idx = ecx_getindex(context->port);
w1 = LO_WORD(LogAdr);
*/
int ecx_receive_processdata_group(ecx_contextt *context, uint8 group, int timeout)
{
- int pos, idx;
+ uint8 idx;
+ int pos;
int wkc = 0, wkc2;
uint16 le_wkc = 0;
int valid_wkc = 0;
* @return mapping size in bits of PDO
* @see ecx_siiPDO
*/
-int ec_siiPDO(uint16 slave, ec_eepromPDOt* PDO, uint8 t)
+uint32 ec_siiPDO(uint16 slave, ec_eepromPDOt* PDO, uint8 t)
{
return ecx_siiPDO (&ecx_context, slave, PDO, t);
}
uint16 ec_siiFMMU(uint16 slave, ec_eepromFMMUt* FMMU);
uint16 ec_siiSM(uint16 slave, ec_eepromSMt* SM);
uint16 ec_siiSMnext(uint16 slave, ec_eepromSMt* SM, uint16 n);
-int ec_siiPDO(uint16 slave, ec_eepromPDOt* PDO, uint8 t);
+uint32 ec_siiPDO(uint16 slave, ec_eepromPDOt* PDO, uint8 t);
int ec_readstate(void);
int ec_writestate(uint16 slave);
uint16 ec_statecheck(uint16 slave, uint16 reqstate, int timeout);
uint16 ecx_siiFMMU(ecx_contextt *context, uint16 slave, ec_eepromFMMUt* FMMU);
uint16 ecx_siiSM(ecx_contextt *context, uint16 slave, ec_eepromSMt* SM);
uint16 ecx_siiSMnext(ecx_contextt *context, uint16 slave, ec_eepromSMt* SM, uint16 n);
-int ecx_siiPDO(ecx_contextt *context, uint16 slave, ec_eepromPDOt* PDO, uint8 t);
+uint32 ecx_siiPDO(ecx_contextt *context, uint16 slave, ec_eepromPDOt* PDO, uint8 t);
int ecx_readstate(ecx_contextt *context);
int ecx_writestate(ecx_contextt *context, uint16 slave);
uint16 ecx_statecheck(ecx_contextt *context, uint16 slave, uint16 reqstate, int timeout);
int ecx_SoEread(ecx_contextt *context, uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int *psize, void *p, int timeout)
{
ec_SoEt *SoEp, *aSoEp;
- uint16 totalsize, framedatasize;
+ int totalsize, framedatasize;
int wkc;
uint8 *bp;
uint8 *mp;
/* get new mailbox count value, used as session handle */
cnt = ec_nextmbxcnt(context->slavelist[slave].mbx_cnt);
context->slavelist[slave].mbx_cnt = cnt;
- SoEp->MbxHeader.mbxtype = ECT_MBXT_SOE + (cnt << 4); /* SoE */
+ SoEp->MbxHeader.mbxtype = ECT_MBXT_SOE + MBX_HDR_SET_CNT(cnt); /* SoE */
SoEp->opCode = ECT_SOE_READREQ;
SoEp->incomplete = 0;
SoEp->error = 0;
int ecx_SoEwrite(ecx_contextt *context, uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int psize, void *p, int timeout)
{
ec_SoEt *SoEp, *aSoEp;
- uint16 framedatasize, maxdata;
+ int framedatasize, maxdata;
int wkc;
uint8 *mp;
uint8 *hp;
framedatasize = maxdata; /* segmented transfer needed */
NotLast = TRUE;
SoEp->incomplete = 1;
- SoEp->fragmentsleft = psize / maxdata;
+ SoEp->fragmentsleft = (uint16)(psize / maxdata);
}
- SoEp->MbxHeader.length = htoes(sizeof(ec_SoEt) - sizeof(ec_mbxheadert) + framedatasize);
+ SoEp->MbxHeader.length = htoes((uint16)(sizeof(ec_SoEt) - sizeof(ec_mbxheadert) + framedatasize));
/* get new mailbox counter, used for session handle */
cnt = ec_nextmbxcnt(context->slavelist[slave].mbx_cnt);
context->slavelist[slave].mbx_cnt = cnt;
- SoEp->MbxHeader.mbxtype = ECT_MBXT_SOE + (cnt << 4); /* SoE */
+ SoEp->MbxHeader.mbxtype = ECT_MBXT_SOE + MBX_HDR_SET_CNT(cnt); /* SoE */
/* copy parameter data to mailbox */
memcpy(mp, hp, framedatasize);
hp += framedatasize;
* @param[out] Isize = Size in bits of input mapping (AT) found
* @return >0 if mapping successful.
*/
-int ecx_readIDNmap(ecx_contextt *context, uint16 slave, int *Osize, int *Isize)
+int ecx_readIDNmap(ecx_contextt *context, uint16 slave, uint32 *Osize, uint32 *Isize)
{
int retVal = 0;
int wkc;
int psize;
- int driveNr;
+ uint8 driveNr;
uint16 entries, itemcount;
ec_SoEmappingt SoEmapping;
ec_SoEattributet SoEattribute;
return ecx_SoEwrite(&ecx_context, slave, driveNo, elementflags, idn, psize, p, timeout);
}
-int ec_readIDNmap(uint16 slave, int *Osize, int *Isize)
+int ec_readIDNmap(uint16 slave, uint32 *Osize, uint32 *Isize)
{
return ecx_readIDNmap(&ecx_context, slave, Osize, Isize);
}
#ifdef EC_VER1
int ec_SoEread(uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int *psize, void *p, int timeout);
int ec_SoEwrite(uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int psize, void *p, int timeout);
-int ec_readIDNmap(uint16 slave, int *Osize, int *Isize);
+int ec_readIDNmap(uint16 slave, uint32 *Osize, uint32 *Isize);
#endif
int ecx_SoEread(ecx_contextt *context, uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int *psize, void *p, int timeout);
int ecx_SoEwrite(ecx_contextt *context, uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int psize, void *p, int timeout);
-int ecx_readIDNmap(ecx_contextt *context, uint16 slave, int *Osize, int *Isize);
+int ecx_readIDNmap(ecx_contextt *context, uint16 slave, uint32 *Osize, uint32 *Isize);
#ifdef __cplusplus
}
} ec_errort;
/** Helper macros */
+
+/** Set the count value in the Mailbox header */
+#define MBX_HDR_SET_CNT(cnt) ((uint8)((cnt) << 4))
+
/** Macro to make a word from 2 bytes */
#define MK_WORD(msb, lsb) ((((uint16)(msb))<<8) | (lsb))
/** Macro to get hi byte of a word */