PIC32MX Harmony i2c Driver
After a long time of debugging my own code I started to debug harmony's I2C static driver and notice that inside of DRV_I2C0_MasterACKSend and DRV_I2C0_MasterNACKSend is a checking like

void DRV_I2C0_MasterACKSend(void)
{
    if(!PLIB_I2C_MasterReceiverReadyToAcknowledge(I2C_ID_1))
        PLIB_I2C_ReceivedByteAcknowledge (I2C_ID_1, true);

}


and all you have to do is to change the if statement to while loop

void DRV_I2C0_MasterACKSend(void)
{
    /* Check if receive is ready to ack */
    while(!PLIB_I2C_MasterReceiverReadyToAcknowledge(I2C_ID_1));
    PLIB_I2C_ReceivedByteAcknowledge (I2C_ID_1, true);

}


I noticed in I2C static driver protocol there is a loot of waiting(looping) and I am afraid the main program will lock itself in some of those loops for some case of scenario