diff --git a/soem/ethercatfoe.c b/soem/ethercatfoe.c index a1e9e25..a7d7035 100644 --- a/soem/ethercatfoe.c +++ b/soem/ethercatfoe.c @@ -360,7 +360,14 @@ int ecx_FOEwrite(ecx_contextt *context, uint16 slave, char *filename, uint32 pas case ECT_FOE_ERROR: { /* FoE error */ - wkc = -EC_ERR_TYPE_FOE_ERROR; + if (aFOEp->ErrorCode == 0x8001) + { + wkc = -EC_ERR_TYPE_FOE_FILE_NOTFOUND; + } + else + { + wkc = -EC_ERR_TYPE_FOE_ERROR; + } break; } default: diff --git a/soem/ethercattype.h b/soem/ethercattype.h index 987a96c..2245ef0 100644 --- a/soem/ethercattype.h +++ b/soem/ethercattype.h @@ -484,15 +484,16 @@ enum /** Error types */ typedef enum { - EC_ERR_TYPE_SDO_ERROR = 0, - EC_ERR_TYPE_EMERGENCY = 1, - EC_ERR_TYPE_PACKET_ERROR = 3, - EC_ERR_TYPE_SDOINFO_ERROR = 4, - EC_ERR_TYPE_FOE_ERROR = 5, - EC_ERR_TYPE_FOE_BUF2SMALL = 6, - EC_ERR_TYPE_FOE_PACKETNUMBER = 7, - EC_ERR_TYPE_SOE_ERROR = 8, - EC_ERR_TYPE_MBX_ERROR = 9 + EC_ERR_TYPE_SDO_ERROR = 0, + EC_ERR_TYPE_EMERGENCY = 1, + EC_ERR_TYPE_PACKET_ERROR = 3, + EC_ERR_TYPE_SDOINFO_ERROR = 4, + EC_ERR_TYPE_FOE_ERROR = 5, + EC_ERR_TYPE_FOE_BUF2SMALL = 6, + EC_ERR_TYPE_FOE_PACKETNUMBER = 7, + EC_ERR_TYPE_SOE_ERROR = 8, + EC_ERR_TYPE_MBX_ERROR = 9, + EC_ERR_TYPE_FOE_FILE_NOTFOUND = 10 } ec_err_type; /** Struct to retrieve errors. */