From 447d184d7e8032758ca8fb70300909a7a6d84806 Mon Sep 17 00:00:00 2001 From: Andreas Karlsson Date: Fri, 9 Oct 2020 16:57:53 +0200 Subject: [PATCH] Fix llvm compiler implicit-int-conversion warnings * use uint8 for idx * make config Isize/Osize uint32 * generally, align sizes in functions to HW objects * Fix non-standard [0] size data array in EoE struct --- oshw/erika/nicdrv.c | 34 +++++++++++------------ oshw/erika/nicdrv.h | 30 ++++++++++---------- oshw/intime/nicdrv.c | 32 +++++++++++----------- oshw/intime/nicdrv.h | 26 +++++++++--------- oshw/linux/nicdrv.c | 36 ++++++++++++------------ oshw/linux/nicdrv.h | 26 +++++++++--------- oshw/macosx/nicdrv.c | 36 ++++++++++++------------ oshw/macosx/nicdrv.h | 26 +++++++++--------- oshw/rtems/nicdrv.c | 36 ++++++++++++------------ oshw/rtems/nicdrv.h | 26 +++++++++--------- oshw/rtk/nicdrv.c | 34 +++++++++++------------ oshw/rtk/nicdrv.h | 26 +++++++++--------- oshw/vxworks/nicdrv.c | 40 +++++++++++++-------------- oshw/vxworks/nicdrv.h | 26 +++++++++--------- oshw/win32/nicdrv.c | 36 ++++++++++++------------ oshw/win32/nicdrv.h | 26 +++++++++--------- soem/ethercatbase.c | 6 ++-- soem/ethercatbase.h | 4 +-- soem/ethercatcoe.c | 64 +++++++++++++++++++++---------------------- soem/ethercatcoe.h | 8 +++--- soem/ethercatconfig.c | 54 ++++++++++++++++++------------------ soem/ethercateoe.c | 21 +++++++------- soem/ethercateoe.h | 13 +++++---- soem/ethercatfoe.c | 10 +++---- soem/ethercatmain.c | 39 ++++++++++++++------------ soem/ethercatmain.h | 4 +-- soem/ethercatsoe.c | 18 ++++++------ soem/ethercatsoe.h | 4 +-- soem/ethercattype.h | 4 +++ 29 files changed, 377 insertions(+), 368 deletions(-) diff --git a/oshw/erika/nicdrv.c b/oshw/erika/nicdrv.c index bfe4c7c..3ef4574 100644 --- a/oshw/erika/nicdrv.c +++ b/oshw/erika/nicdrv.c @@ -165,10 +165,10 @@ void ec_setupheader(void *p) * @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(); @@ -199,7 +199,7 @@ int ecx_getindex(ecx_portt *port) * @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) @@ -212,7 +212,7 @@ void ecx_setbufstat(ecx_portt *port, int idx, int bufstat) * @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; @@ -234,7 +234,7 @@ int ecx_outframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -300,11 +300,11 @@ static int ecx_recvpkt(ecx_portt *port, int stacknumber) * @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; @@ -389,7 +389,7 @@ int ecx_inframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -464,7 +464,7 @@ static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer) * @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; @@ -487,7 +487,7 @@ int ecx_waitinframe(ecx_portt *port, int idx, int timeout) * @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; @@ -529,32 +529,32 @@ int 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); } diff --git a/oshw/erika/nicdrv.h b/oshw/erika/nicdrv.h index 2398040..20e5d82 100644 --- a/oshw/erika/nicdrv.h +++ b/oshw/erika/nicdrv.h @@ -73,7 +73,7 @@ typedef struct /** 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 */ @@ -94,26 +94,26 @@ extern ecx_redportt ecx_redport; 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 } diff --git a/oshw/intime/nicdrv.c b/oshw/intime/nicdrv.c index 7cb3516..a7751d1 100644 --- a/oshw/intime/nicdrv.c +++ b/oshw/intime/nicdrv.c @@ -267,10 +267,10 @@ void ec_setupheader(void *p) /** 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); @@ -307,7 +307,7 @@ int ecx_getindex(ecx_portt *port) * @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) @@ -321,7 +321,7 @@ void ecx_setbufstat(ecx_portt *port, int idx, int bufstat) * @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; @@ -384,7 +384,7 @@ end: * @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; @@ -471,7 +471,7 @@ static int ecx_recvpkt(ecx_portt *port, int stacknumber) * @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; @@ -560,7 +560,7 @@ int ecx_inframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -646,7 +646,7 @@ static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer) * @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; @@ -681,7 +681,7 @@ int ecx_waitinframe(ecx_portt *port, int idx, int timeout) * @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; @@ -706,37 +706,37 @@ int ec_closenic(void) 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); } diff --git a/oshw/intime/nicdrv.h b/oshw/intime/nicdrv.h index 7ae8ed3..8802d4e 100644 --- a/oshw/intime/nicdrv.h +++ b/oshw/intime/nicdrv.h @@ -74,7 +74,7 @@ typedef struct /** 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 */ @@ -97,20 +97,20 @@ extern const uint16 secMAC[3]; 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 diff --git a/oshw/linux/nicdrv.c b/oshw/linux/nicdrv.c index 6b72a02..8391bfa 100644 --- a/oshw/linux/nicdrv.c +++ b/oshw/linux/nicdrv.c @@ -215,10 +215,10 @@ void ec_setupheader(void *p) * @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) ); @@ -254,7 +254,7 @@ int ecx_getindex(ecx_portt *port) * @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) @@ -267,7 +267,7 @@ void ecx_setbufstat(ecx_portt *port, int idx, int bufstat) * @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; @@ -296,7 +296,7 @@ int ecx_outframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -370,11 +370,11 @@ static int ecx_recvpkt(ecx_portt *port, int stacknumber) * @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; @@ -464,7 +464,7 @@ int ecx_inframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -547,7 +547,7 @@ static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer) * @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; @@ -570,7 +570,7 @@ int ecx_waitinframe(ecx_portt *port, int idx, int timeout) * @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; @@ -608,37 +608,37 @@ int ec_closenic(void) 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); } diff --git a/oshw/linux/nicdrv.h b/oshw/linux/nicdrv.h index a64af17..c2dd209 100644 --- a/oshw/linux/nicdrv.h +++ b/oshw/linux/nicdrv.h @@ -76,7 +76,7 @@ typedef struct /** 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 */ @@ -95,23 +95,23 @@ extern ecx_redportt ecx_redport; 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 } diff --git a/oshw/macosx/nicdrv.c b/oshw/macosx/nicdrv.c index a9ed497..e202bb0 100644 --- a/oshw/macosx/nicdrv.c +++ b/oshw/macosx/nicdrv.c @@ -201,10 +201,10 @@ void ec_setupheader(void *p) * @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)); @@ -240,7 +240,7 @@ int ecx_getindex(ecx_portt *port) * @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) @@ -253,7 +253,7 @@ void ecx_setbufstat(ecx_portt *port, int idx, int bufstat) * @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; @@ -282,7 +282,7 @@ int ecx_outframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -371,11 +371,11 @@ static int ecx_recvpkt(ecx_portt *port, int stacknumber) * @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; @@ -465,7 +465,7 @@ int ecx_inframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -548,7 +548,7 @@ static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer) * @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; @@ -571,7 +571,7 @@ int ecx_waitinframe(ecx_portt *port, int idx, int timeout) * @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; @@ -611,37 +611,37 @@ int ec_closenic(void) 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); } diff --git a/oshw/macosx/nicdrv.h b/oshw/macosx/nicdrv.h index 795cf27..45ac04c 100644 --- a/oshw/macosx/nicdrv.h +++ b/oshw/macosx/nicdrv.h @@ -76,7 +76,7 @@ typedef struct /** 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 */ @@ -95,23 +95,23 @@ extern ecx_redportt ecx_redport; 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 } diff --git a/oshw/rtems/nicdrv.c b/oshw/rtems/nicdrv.c index c7cb2da..b2c9b2f 100644 --- a/oshw/rtems/nicdrv.c +++ b/oshw/rtems/nicdrv.c @@ -260,10 +260,10 @@ void ec_setupheader(void *p) * @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) ); @@ -299,7 +299,7 @@ int ecx_getindex(ecx_portt *port) * @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) @@ -312,7 +312,7 @@ void ecx_setbufstat(ecx_portt *port, int idx, int bufstat) * @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; @@ -342,7 +342,7 @@ int ecx_outframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -418,11 +418,11 @@ static int ecx_recvpkt(ecx_portt *port, int stacknumber) * @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; @@ -515,7 +515,7 @@ int ecx_inframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -598,7 +598,7 @@ static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer) * @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; @@ -621,7 +621,7 @@ int ecx_waitinframe(ecx_portt *port, int idx, int timeout) * @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; @@ -659,37 +659,37 @@ int ec_closenic(void) 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); } diff --git a/oshw/rtems/nicdrv.h b/oshw/rtems/nicdrv.h index a64af17..c2dd209 100644 --- a/oshw/rtems/nicdrv.h +++ b/oshw/rtems/nicdrv.h @@ -76,7 +76,7 @@ typedef struct /** 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 */ @@ -95,23 +95,23 @@ extern ecx_redportt ecx_redport; 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 } diff --git a/oshw/rtk/nicdrv.c b/oshw/rtk/nicdrv.c index 537127d..5568d84 100644 --- a/oshw/rtk/nicdrv.c +++ b/oshw/rtk/nicdrv.c @@ -192,10 +192,10 @@ void ec_setupheader(void *p) * @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); @@ -233,7 +233,7 @@ int ecx_getindex(ecx_portt *port) * @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) @@ -248,7 +248,7 @@ void ecx_setbufstat(ecx_portt *port, int idx, int bufstat) * @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; @@ -273,7 +273,7 @@ int ecx_outframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -347,7 +347,7 @@ static int ecx_recvpkt(ecx_portt *port, int stacknumber) * @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; @@ -441,7 +441,7 @@ int ecx_inframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -534,7 +534,7 @@ static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert timer) * @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; @@ -557,7 +557,7 @@ int ecx_waitinframe(ecx_portt *port, int idx, int timeout) * @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; @@ -590,37 +590,37 @@ int ec_closenic(void) 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); } diff --git a/oshw/rtk/nicdrv.h b/oshw/rtk/nicdrv.h index 900b3f5..b51fab8 100644 --- a/oshw/rtk/nicdrv.h +++ b/oshw/rtk/nicdrv.h @@ -69,7 +69,7 @@ typedef struct /** 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 */ @@ -88,22 +88,22 @@ extern ecx_redportt ecx_redport; 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 diff --git a/oshw/vxworks/nicdrv.c b/oshw/vxworks/nicdrv.c index 0e45787..3e37118 100644 --- a/oshw/vxworks/nicdrv.c +++ b/oshw/vxworks/nicdrv.c @@ -371,10 +371,10 @@ void ec_setupheader(void *p) * @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); @@ -408,7 +408,7 @@ int ecx_getindex(ecx_portt *port) * @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) @@ -423,7 +423,7 @@ void ecx_setbufstat(ecx_portt *port, int idx, int bufstat) * @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; @@ -500,7 +500,7 @@ static int ec_outfram_send(ETHERCAT_PKT_DEV * pPktDev, int idx, void * buf, int * @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; @@ -537,7 +537,7 @@ int ecx_outframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -581,7 +581,7 @@ int ecx_outframe_red(ecx_portt *port, int idx) 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; @@ -678,7 +678,7 @@ static int mux_rx_callback(void* pCookie, long type, M_BLK_ID pMblk, LL_HDR_INFO * @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; @@ -728,7 +728,7 @@ static int ecx_recvpkt(ecx_portt *port, int idx, int stacknumber, M_BLK_ID * pMb * @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; @@ -792,7 +792,7 @@ int ecx_inframe(ecx_portt *port, int idx, int stacknumber, int timeout) * @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; @@ -881,7 +881,7 @@ static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer, int * @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; @@ -904,7 +904,7 @@ int ecx_waitinframe(ecx_portt *port, int idx, int timeout) * @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; @@ -943,37 +943,37 @@ int ec_closenic(void) 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); } diff --git a/oshw/vxworks/nicdrv.h b/oshw/vxworks/nicdrv.h index e009399..6bb34e5 100644 --- a/oshw/vxworks/nicdrv.h +++ b/oshw/vxworks/nicdrv.h @@ -85,7 +85,7 @@ typedef struct ecx_port /** 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 */ @@ -105,23 +105,23 @@ extern ecx_redportt ecx_redport; 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 } diff --git a/oshw/win32/nicdrv.c b/oshw/win32/nicdrv.c index 598e407..7c9b11c 100644 --- a/oshw/win32/nicdrv.c +++ b/oshw/win32/nicdrv.c @@ -202,10 +202,10 @@ void ec_setupheader(void *p) * @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)); @@ -241,7 +241,7 @@ int ecx_getindex(ecx_portt *port) * @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) @@ -254,7 +254,7 @@ void ecx_setbufstat(ecx_portt *port, int idx, int bufstat) * @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; @@ -283,7 +283,7 @@ int ecx_outframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -371,11 +371,11 @@ static int ecx_recvpkt(ecx_portt *port, int stacknumber) * @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; @@ -465,7 +465,7 @@ int ecx_inframe(ecx_portt *port, int idx, int stacknumber) * @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; @@ -548,7 +548,7 @@ static int ecx_waitinframe_red(ecx_portt *port, int idx, osal_timert *timer) * @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; @@ -571,7 +571,7 @@ int ecx_waitinframe(ecx_portt *port, int idx, int timeout) * @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; @@ -611,37 +611,37 @@ int ec_closenic(void) 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); } diff --git a/oshw/win32/nicdrv.h b/oshw/win32/nicdrv.h index 20d5d51..32103a3 100644 --- a/oshw/win32/nicdrv.h +++ b/oshw/win32/nicdrv.h @@ -79,7 +79,7 @@ typedef struct /** 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 */ @@ -98,23 +98,23 @@ extern ecx_redportt ecx_redport; 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 } diff --git a/soem/ethercatbase.c b/soem/ethercatbase.c index a3a8510..ba92563 100644 --- a/soem/ethercatbase.c +++ b/soem/ethercatbase.c @@ -103,7 +103,7 @@ int ecx_setupdatagram(ecx_portt *port, void *frame, uint8 com, uint8 idx, uint16 * @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; @@ -111,7 +111,7 @@ int ecx_adddatagram(ecx_portt *port, void *frame, uint8 com, uint8 idx, boolean 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 ); @@ -541,7 +541,7 @@ int ec_setupdatagram(void *frame, uint8 com, uint8 idx, uint16 ADP, uint16 ADO, 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); } diff --git a/soem/ethercatbase.h b/soem/ethercatbase.h index 2f6a900..e1ee687 100644 --- a/soem/ethercatbase.h +++ b/soem/ethercatbase.h @@ -17,7 +17,7 @@ extern "C" #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); @@ -37,7 +37,7 @@ int ecx_LRWDC(ecx_portt *port, uint32 LogAdr, uint16 length, void *data, uint16 #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); diff --git a/soem/ethercatcoe.c b/soem/ethercatcoe.c index 735304d..e1a9ce3 100644 --- a/soem/ethercatcoe.c +++ b/soem/ethercatcoe.c @@ -142,7 +142,7 @@ int ecx_SDOread(ecx_contextt *context, uint16 slave, uint16 index, uint8 subinde /* 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) { @@ -218,7 +218,7 @@ int ecx_SDOread(ecx_contextt *context, uint16 slave, uint16 index, uint8 subinde 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); @@ -331,10 +331,9 @@ int ecx_SDOwrite(ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubInd 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; @@ -354,7 +353,7 @@ int ecx_SDOwrite(ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubInd /* 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); @@ -404,13 +403,13 @@ int ecx_SDOwrite(ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubInd 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) { @@ -466,18 +465,18 @@ int ecx_SDOwrite(ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubInd 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 */ @@ -552,10 +551,9 @@ int ecx_SDOwrite(ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubInd 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 */ @@ -568,13 +566,13 @@ int ecx_RxPDO(ecx_contextt *context, uint16 Slave, uint16 RxPDOnumber, int psize { 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); @@ -616,7 +614,7 @@ int ecx_TxPDO(ecx_contextt *context, uint16 slave, uint16 TxPDOnumber , int *psi /* 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) @@ -672,12 +670,13 @@ int ecx_TxPDO(ecx_contextt *context, uint16 slave, uint16 TxPDOnumber , int *psi * @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) */ @@ -737,11 +736,12 @@ int ecx_readPDOassign(ecx_contextt *context, uint16 Slave, uint16 PDOassign) * @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); @@ -807,12 +807,12 @@ int ecx_readPDOassignCA(ecx_contextt *context, uint16 Slave, int Thread_n, * @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; @@ -868,7 +868,7 @@ int ecx_readPDOmap(ecx_contextt *context, uint16 Slave, int *Osize, int *Isize) /* 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 */ @@ -907,12 +907,12 @@ int ecx_readPDOmap(ecx_contextt *context, uint16 Slave, int *Osize, int *Isize) * @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; @@ -964,7 +964,7 @@ int ecx_readPDOmapCA(ecx_contextt *context, uint16 Slave, int Thread_n, int *Osi /* 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 */ @@ -1019,7 +1019,7 @@ int ecx_readODlist(ecx_contextt *context, uint16 Slave, ec_ODlistt *pODlist) /* 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; @@ -1139,7 +1139,7 @@ int ecx_readODdescription(ecx_contextt *context, uint16 Item, ec_ODlistt *pODlis /* 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; @@ -1224,7 +1224,7 @@ int ecx_readOEsingle(ecx_contextt *context, uint16 Item, uint8 SubI, ec_ODlistt /* 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; @@ -1408,7 +1408,7 @@ int ec_TxPDO(uint16 slave, uint16 TxPDOnumber , int *psize, void *p, int timeout * @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); } @@ -1420,7 +1420,7 @@ int ec_readPDOassign(uint16 Slave, uint16 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); } @@ -1438,7 +1438,7 @@ int ec_readPDOassignCA(uint16 Slave, uint16 PDOassign, int Thread_n) * @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); } @@ -1456,7 +1456,7 @@ int ec_readPDOmap(uint16 Slave, int *Osize, int *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); } diff --git a/soem/ethercatcoe.h b/soem/ethercatcoe.h index 8a789c8..a237fb8 100644 --- a/soem/ethercatcoe.h +++ b/soem/ethercatcoe.h @@ -66,8 +66,8 @@ int ec_SDOwrite(uint16 Slave, uint16 Index, uint8 SubIndex, 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); @@ -81,8 +81,8 @@ int ecx_SDOwrite(ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubInd 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); diff --git a/soem/ethercatconfig.c b/soem/ethercatconfig.c index 85068f3..f7c3125 100644 --- a/soem/ethercatconfig.c +++ b/soem/ethercatconfig.c @@ -484,7 +484,7 @@ int ecx_config_init(ecx_contextt *context, uint8 usetable) 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 ? */ @@ -607,7 +607,7 @@ int ecx_config_init(ecx_contextt *context, uint8 usetable) /* 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)) @@ -629,8 +629,8 @@ static int ecx_lookup_mapping(ecx_contextt *context, uint16 slave, int *Osize, i } *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; } @@ -640,7 +640,7 @@ static int ecx_lookup_mapping(ecx_contextt *context, uint16 slave, int *Osize, i 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 */ @@ -675,18 +675,18 @@ static int ecx_map_coe_soe(ecx_contextt *context, uint16 slave, int thread_n) /* 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; @@ -694,7 +694,7 @@ static int ecx_map_coe_soe(ecx_contextt *context, uint16 slave, int thread_n) static int ecx_map_sii(ecx_contextt *context, uint16 slave) { - int Isize, Osize; + uint32 Isize, Osize; int nSM; ec_eepromPDOt eepPDO; @@ -708,8 +708,8 @@ static int ecx_map_sii(ecx_contextt *context, uint16 slave) 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) @@ -719,8 +719,8 @@ static int ecx_map_sii(ecx_contextt *context, uint16 slave) 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) @@ -731,8 +731,8 @@ static int ecx_map_sii(ecx_contextt *context, uint16 slave) } } } - 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); @@ -897,10 +897,10 @@ static void ecx_config_create_input_mappings(ecx_contextt *context, void *pIOmap 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; @@ -963,7 +963,7 @@ static void ecx_config_create_input_mappings(ecx_contextt *context, void *pIOmap *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; @@ -987,7 +987,7 @@ static void ecx_config_create_input_mappings(ecx_contextt *context, void *pIOmap 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); @@ -1041,10 +1041,10 @@ static void ecx_config_create_output_mappings(ecx_contextt *context, void *pIOma 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; @@ -1101,7 +1101,7 @@ static void ecx_config_create_output_mappings(ecx_contextt *context, void *pIOma *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; @@ -1125,7 +1125,7 @@ static void ecx_config_create_output_mappings(ecx_contextt *context, void *pIOma 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); @@ -1259,7 +1259,7 @@ int ecx_config_map_group(ecx_contextt *context, void *pIOmap, uint8 group) 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; diff --git a/soem/ethercateoe.c b/soem/ethercateoe.c index a444565..b23773a 100644 --- a/soem/ethercateoe.c +++ b/soem/ethercateoe.c @@ -87,9 +87,9 @@ int ecx_EOEsetIp(ecx_contextt *context, uint16 slave, uint8 port, eoe_param_t * 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; @@ -198,9 +198,9 @@ int ecx_EOEgetIp(ecx_contextt *context, uint16 slave, uint8 port, eoe_param_t * 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; @@ -318,10 +318,9 @@ int ecx_EOEsend(ecx_contextt *context, uint16 slave, uint8 port, int psize, void 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; @@ -371,8 +370,8 @@ int ecx_EOEsend(ecx_contextt *context, uint16 slave, uint8 port, int psize, void 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); @@ -410,10 +409,10 @@ int ecx_EOErecv(ecx_contextt *context, uint16 slave, uint8 port, int * psize, vo { 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); @@ -573,7 +572,7 @@ int ecx_EOEreadfragment( /* 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); } diff --git a/soem/ethercateoe.h b/soem/ethercateoe.h index a4c2c73..fabd9b4 100644 --- a/soem/ethercateoe.h +++ b/soem/ethercateoe.h @@ -18,6 +18,9 @@ extern "C" #include +/* 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 */ @@ -63,7 +66,7 @@ extern "C" #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) @@ -81,15 +84,15 @@ extern "C" /** 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 */ @@ -165,7 +168,7 @@ typedef struct PACKED uint16_t frameinfo2; uint16_t result; }; - uint8 data[0]; + uint8 data[EC_MAXEOEDATA]; } ec_EOEt; PACKED_END diff --git a/soem/ethercatfoe.c b/soem/ethercatfoe.c index 7bab985..573cfc0 100644 --- a/soem/ethercatfoe.c +++ b/soem/ethercatfoe.c @@ -98,7 +98,7 @@ int ecx_FOEread(ecx_contextt *context, uint16 slave, char *filename, uint32 pass /* 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 */ @@ -138,7 +138,7 @@ int ecx_FOEread(ecx_contextt *context, uint16 slave, char *filename, uint32 pass /* 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 */ @@ -227,7 +227,7 @@ int ecx_FOEwrite(ecx_contextt *context, uint16 slave, char *filename, uint32 pas /* 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 */ @@ -276,13 +276,13 @@ int ecx_FOEwrite(ecx_contextt *context, uint16 slave, char *filename, uint32 pas { 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); diff --git a/soem/ethercatmain.c b/soem/ethercatmain.c index 7dcccd7..48c4d8d 100644 --- a/soem/ethercatmain.c +++ b/soem/ethercatmain.c @@ -347,7 +347,7 @@ uint8 ecx_siigetbyte(ecx_contextt *context, uint16 slave, uint16 address) 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 */ @@ -375,7 +375,7 @@ uint8 ecx_siigetbyte(ecx_contextt *context, uint16 slave, uint16 address) } /* 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 */ @@ -550,7 +550,7 @@ uint16 ecx_siiSM(ecx_contextt *context, uint16 slave, ec_eepromSMt* SM) 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++); @@ -609,7 +609,7 @@ uint16 ecx_siiSMnext(ecx_contextt *context, uint16 slave, ec_eepromSMt* SM, uint * @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; @@ -683,7 +683,7 @@ int ecx_FPRD_multi(ecx_contextt *context, int n, uint16 *configlst, ec_alstatust int wkc; uint8 idx; ecx_portt *port; - int sldatapos[MAX_FPRD_MULTI]; + uint16 sldatapos[MAX_FPRD_MULTI]; int slcnt; port = context->port; @@ -787,7 +787,7 @@ int ecx_readstate(ecx_contextt *context) fslave = 1; do { - lslave = *(context->slavecount); + lslave = (uint16)*(context->slavecount); if ((lslave - fslave) >= MAX_FPRD_MULTI) { lslave = fslave + MAX_FPRD_MULTI - 1; @@ -1111,8 +1111,7 @@ int ecx_mbxreceive(ecx_contextt *context, uint16 slave, ec_mbxbuft *mbx, int tim */ 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; @@ -1240,7 +1239,8 @@ int ecx_eeprom2pdi(ecx_contextt *context, uint16 slave) 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); @@ -1409,7 +1409,8 @@ int ecx_writeeepromAP(ecx_contextt *context, uint16 aiadr, uint16 eeproma, uint1 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); @@ -1698,7 +1699,8 @@ static int ecx_main_send_processdata(ecx_contextt *context, uint8 group, boolean { uint32 LogAdr; uint16 w1, w2; - int length, sublength; + int length; + uint16 sublength; uint8 idx; int wkc; uint8* data; @@ -1748,11 +1750,11 @@ static int ecx_main_send_processdata(ecx_contextt *context, uint8 group, boolean { 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); @@ -1787,10 +1789,10 @@ static int ecx_main_send_processdata(ecx_contextt *context, uint8 group, boolean /* 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); @@ -1832,7 +1834,7 @@ static int ecx_main_send_processdata(ecx_contextt *context, uint8 group, boolean /* 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); @@ -1910,7 +1912,8 @@ int ecx_send_processdata_group(ecx_contextt *context, uint8 group) */ 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; @@ -2127,7 +2130,7 @@ uint16 ec_siiSMnext(uint16 slave, ec_eepromSMt* SM, uint16 n) * @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); } diff --git a/soem/ethercatmain.h b/soem/ethercatmain.h index 48c33da..34ce9aa 100644 --- a/soem/ethercatmain.h +++ b/soem/ethercatmain.h @@ -453,7 +453,7 @@ void ec_siistring(char *str, uint16 slave, uint16 Sn); 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); @@ -496,7 +496,7 @@ void ecx_siistring(ecx_contextt *context, char *str, uint16 slave, uint16 Sn); 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); diff --git a/soem/ethercatsoe.c b/soem/ethercatsoe.c index ecc9348..eb83a64 100644 --- a/soem/ethercatsoe.c +++ b/soem/ethercatsoe.c @@ -78,7 +78,7 @@ void ecx_SoEerror(ecx_contextt *context, uint16 Slave, uint16 idn, uint16 Error) 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; @@ -99,7 +99,7 @@ int ecx_SoEread(ecx_contextt *context, uint16 slave, uint8 driveNo, uint8 elemen /* 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; @@ -200,7 +200,7 @@ int ecx_SoEread(ecx_contextt *context, uint16 slave, uint8 driveNo, uint8 elemen 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; @@ -236,13 +236,13 @@ int ecx_SoEwrite(ecx_contextt *context, uint16 slave, uint8 driveNo, uint8 eleme 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; @@ -309,12 +309,12 @@ int ecx_SoEwrite(ecx_contextt *context, uint16 slave, uint8 driveNo, uint8 eleme * @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; @@ -382,7 +382,7 @@ int ec_SoEwrite(uint16 slave, uint8 driveNo, uint8 elementflags, uint16 idn, int 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); } diff --git a/soem/ethercatsoe.h b/soem/ethercatsoe.h index 42de488..35d76d1 100644 --- a/soem/ethercatsoe.h +++ b/soem/ethercatsoe.h @@ -116,12 +116,12 @@ PACKED_END #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 } diff --git a/soem/ethercattype.h b/soem/ethercattype.h index 6b4d17c..527ccd7 100644 --- a/soem/ethercattype.h +++ b/soem/ethercattype.h @@ -506,6 +506,10 @@ typedef struct } 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 */