Tool/software:
Hi,
I have a problem with saving I&M data in Profinet.
I have declared the callback PN_APP_IOD_cbStoreRemaMem about like this:
uint32_t PN_APP_IOD_cbStoreRemaMem(PN_API_IOD_Handle_t *const pnHandle, PN_API_IOD_RemaDataType_t type, const uint32_t instance, const uint32_t memSize, uint8_t *const srcMem) { switch(type) { [...] case PN_API_IOD_RemaDataIm1: DebugP_log("Save remanent memory indicated. Type: IM1, instance: %u\r\n", instance); memset((void *) &myParameters.profinetIM1[instance], ' ', sizeof(profinetIM1_t)); memcpy((void *) &myParameters.profinetIM1[instance], srcMem, memSize); SaveParametersToFlash(); //Function to write my parameters in flash PN_API_IOD_dataStoreComplete(pnHandle, sizeof(myParameters)); break; case PN_API_IOD_RemaDataIm2: DebugP_log("Save remanent memory indicated. Type: IM2, instance: %u\r\n", instance); memset((void *) &myParameters.profinetIM2[instance], ' ', sizeof(profinetIM2_t)); memcpy((void *) &myParameters.profinetIM2[instance], srcMem, memSize); SaveParametersToFlash(); //Function to write my parameters in flash PN_API_IOD_dataStoreComplete(pnHandle, sizeof(myParameters)); break; case PN_API_IOD_RemaDataIm3: DebugP_log("Save remanent memory indicated. Type: IM3, instance: %u\r\n", instance); memset((void *) &myParameters.profinetIM3[instance], ' ', sizeof(profinetIM3_t)); memcpy((void *) &myParameters.profinetIM3[instance], srcMem, memSize); SaveParametersToFlash(); //Function to write my parameters in flash PN_API_IOD_dataStoreComplete(pnHandle, sizeof(myParameters)); break; case PN_API_IOD_RemaDataIm4: DebugP_log("Save remanent memory indicated. Type: IM4, instance: %u\r\n", instance); memset((void *) &myParameters.profinetIM4[instance], ' ', sizeof(profinetIM4_t)); memcpy((void *) &myParameters.profinetIM4[instance], srcMem, memSize); SaveParametersToFlash(); //Function to write my parameters in flash PN_API_IOD_dataStoreComplete(pnHandle, sizeof(myParameters)); break; [...] } return PN_API_OK; }
But if I try to edit the I&M informations (for example, with the Proneta tool), I see from the debug prints that the callback is called and I can correctly save I&M1, but the callback to save I&M2 and I&M3 are not called at all. Then Proneta no longer shows me the I&M information and I need to restart the device to see them. On reboot then I see that only I&M1 was saved in flash, while the other I&Ms are not actually saved in flash.
However, If I try to use the demo, the I&M management works correctly.
What could I be doing wrong?
Thank you,
Best Regards,
Andrea