Energy harvesting in self-sustainable IoT devices and applications based on cross-layer architecture design: A survey