Arduino with deep sleep

Hello everyone, I am working on an athlete performance device, I am Barebone Arduino Mega with GPS on UART 1, SD card on SPI, Accelerometer on I2C and Heart Rate Measurement on Analog pin 0...

I want to keep my device on Deep Sleep when a session is completed, I have a button on Arduino pin# 6 which is interrupt 2 and pulled HIGH to it.

I have watched this Kevin darrah YOUTUBE TUTORAIL! for keeing Arduino on Deep Sleep..

i am going to use this complete guidelines of the video, which turns off Analog pins,I2C,SPI etc..

Questions is : When i press the reset the Atmega2560 after going into deep sleep, does it comes back to normal working state with all working analog pins, I2C,SPI etc.?

And is there any way to put Atemga2560 in deep sleep if the buttin and hold for 3 seconds and wake up for 3 seconds, If 'Yes' then how.?

Thank you very much..

If you reset Arduino it will start as if it were powered on - run setup () and start loop().

The sleep/wake after 3 seconds may be done in hardware by looong debouncing or (better) by software cheat: it wakes up as soon as button is pressed but if it is not held long enough Arduino goes back to sleep.

Thank you for the reply,

If you reset Arduino it will start as if it were powered on - run setup () and start loop().

Just for the clarifications, Is that mean i don't have to turn ON SPI,I2C and also Analog protocols.??

Thank you