- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 
                        unsigned char SIM300_Reboot(void)
{
    // проверим статус модема
    if (!pinSTATUS)             // если STATUS = 0 (модем выключен)
    {
        while (1)               //если не включается-включаем до посинения
        {
            if (!(Modem_ON()))
                return 0;
        }
    } else                      // если STATUS = 1 (модем включен)
    {
        while (1)               //если не выключается - выключаем до посинения
        {
            if ((!Modem_OFF()) && (!Modem_ON()))
                return 0;
        }
    }
}
                                 
        
            тяжёлые будни программиста embedded-систем.
дополнительный аромат: упомянутые функции возвращают 0 в случае успешного выполнения, а не наоборот, как можно было бы подумать при виде if (!some_func(...))
        
        
return 0;
Ommmmmmm....
return 0;
вот это красивое решение
Вообще жесть, что тут написано :D
То есть приведенный код в итоге никогда не выключит модем, он будет всегда включен.