A Cross-Layer Fault Tolerant Protocol with Recovery Mechanism for Clustered Sensor Networks