Changeset 359


Ignore:
Timestamp:
Jun 20, 2018, 7:59:22 PM (6 years ago)
Author:
coas-nagasima
Message:

SDカードの挿抜を検知するよう更新

Files:
118 edited

Legend:

Unmodified
Added
Removed
  • asp3_tinet_ecnl_arm/trunk/app1_usb_watt_meter/src/main.c

    r352 r359  
    220220
    221221        /* 初期化 */
    222         if (ffarch_init() == 0) {
    223                 gpio_write(&led_blue, 0);
    224         }
    225         else {
    226                 gpio_write(&led_blue, 0);
    227                 gpio_write(&led_red, 1);
    228         }
     222        ffarch_init();
    229223
    230224        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_arm/trunk/app2_light/src/main.c

    r352 r359  
    207207
    208208        /* 初期化 */
    209         if (ffarch_init() == 0) {
    210                 gpio_write(&led_blue, 0);
    211         }
    212         else {
    213                 gpio_write(&led_blue, 0);
    214                 gpio_write(&led_red, 1);
    215         }
     209        ffarch_init();
    216210
    217211        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_arm/trunk/app3_human_detec/src/main.c

    r352 r359  
    207207
    208208        /* 初期化 */
    209         if (ffarch_init() == 0) {
    210                 gpio_write(&led_blue, 0);
    211         }
    212         else {
    213                 gpio_write(&led_blue, 0);
    214                 gpio_write(&led_red, 1);
    215         }
     209        ffarch_init();
    216210
    217211        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_arm/trunk/app4_aircon/src/main.c

    r352 r359  
    207207
    208208        /* 初期化 */
    209         if (ffarch_init() == 0) {
    210                 gpio_write(&led_blue, 0);
    211         }
    212         else {
    213                 gpio_write(&led_blue, 0);
    214                 gpio_write(&led_red, 1);
    215         }
     209        ffarch_init();
    216210
    217211        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_arm/trunk/app5_temp_sensor/src/main.c

    r352 r359  
    207207
    208208        /* 初期化 */
    209         if (ffarch_init() == 0) {
    210                 gpio_write(&led_blue, 0);
    211         }
    212         else {
    213                 gpio_write(&led_blue, 0);
    214                 gpio_write(&led_red, 1);
    215         }
     209        ffarch_init();
    216210
    217211        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_arm/trunk/app6_hot_water_pot/src/main.c

    r352 r359  
    207207
    208208        /* 初期化 */
    209         if (ffarch_init() == 0) {
    210                 gpio_write(&led_blue, 0);
    211         }
    212         else {
    213                 gpio_write(&led_blue, 0);
    214                 gpio_write(&led_red, 1);
    215         }
     209        ffarch_init();
    216210
    217211        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_arm/trunk/app7_buzzer/src/main.c

    r352 r359  
    207207
    208208        /* 初期化 */
    209         if (ffarch_init() == 0) {
    210                 gpio_write(&led_blue, 0);
    211         }
    212         else {
    213                 gpio_write(&led_blue, 0);
    214                 gpio_write(&led_red, 1);
    215         }
     209        ffarch_init();
    216210
    217211        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_arm/trunk/asp3_dcre/syssvc/serial.h

    r352 r359  
    6060        uint_t          reacnt;                 /* 受信バッファ中の文字数 */
    6161        uint_t          wricnt;                 /* 送信バッファ中の文字数 */
    62         uint_t          wbufsz;                 /* 送信バッファサイズ */
    6362} T_SERIAL_RPOR;
    6463
  • asp3_tinet_ecnl_arm/trunk/asp3_dcre/syssvc/tSerialPortMain.c

    r352 r359  
    504504        pk_rpor->reacnt = VAR_receiveCount;
    505505        pk_rpor->wricnt = VAR_sendCount;
    506         pk_rpor->wbufsz = ATTR_sendBufferSize;
    507506        return(E_OK);
    508507}
  • asp3_tinet_ecnl_arm/trunk/bnep_bridge/src/main.c

    r352 r359  
    193193
    194194        /* 初期化 */
    195         if (ffarch_init() == 0) {
    196                 gpio_write(&led_blue, 0);
    197         }
    198         else {
    199                 gpio_write(&led_blue, 0);
    200                 gpio_write(&led_red, 1);
    201         }
     195        ffarch_init();
    202196
    203197        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_arm/trunk/ntshell/fatfs/ffarch.c

    r352 r359  
    5353#include "util/ntstdio.h"
    5454
    55 //extern ntstdio_t ntstdio;
     55extern ntstdio_t ntstdio;
     56
     57enum ffarch_state_t {
     58        FFS_IDLE,
     59        FFS_RETRY_WAIT,
     60};
     61
     62enum ffarch_state_t ffarch_state;
     63volatile int ffarch_timer;
     64int ffarch_retry_count;
     65uint8_t sdfs_new_status, sdfs_prev_status;
     66
     67static void ffarch_initialize();
     68
     69/*
     70 * FatFSタスク
     71 */
     72void ffarch_task(intptr_t exinf)
     73{
     74        ER ret, ret2;
     75        SYSTIM prev, now;
     76        int timer;
     77
     78        ffarch_initialize();
     79
     80        ret2 = get_tim(&now);
     81        if (ret2 != E_OK){
     82                ntstdio_printf(&ntstdio, "[ffarch] get_tim error: %s",
     83                        itron_strerror(ret2));
     84                return;
     85        }
     86
     87        for(;;){
     88                prev = now;
     89
     90                /* タイマー取得 */
     91                timer = ffarch_get_timer();
     92
     93                /* 待ち */
     94                ret = tslp_tsk(timer);
     95                if ((ret != E_OK) && (ret != E_TMOUT)) {
     96                        ntstdio_printf(&ntstdio, "[ffarch] tslp_tsk error: %s %d",
     97                                itron_strerror(ret), timer);
     98                        break;
     99                }
     100
     101                ret2 = get_tim(&now);
     102                if (ret2 != E_OK) {
     103                        ntstdio_printf(&ntstdio, "[ffarch] get_tim error: %s",
     104                                itron_strerror(ret2));
     105                        break;
     106                }
     107
     108                /* 時間経過 */
     109                int elapse = now - prev;
     110                ffarch_progress(elapse);
     111
     112                /* タイムアウト処理 */
     113                ffarch_timeout();
     114        }
     115}
    56116
    57117FATFS RomDisk;
     
    71131bool_t SD_begin();
    72132
    73 int ffarch_init()
    74 {
    75         int result = -1;
    76 
     133void ffarch_init()
     134{
    77135        /* SD_CD */
    78136        gpio_init_in(&ins, P7_8);
     
    81139        sdfs_init(&sdfs, P8_5, P8_6, P8_3, P8_4, "sd");
    82140
    83         result = SD_begin() ? 0 : -1;
    84         if (result == 0) {
    85                 printf("SD card (1:) OK!\n");
     141        ffarch_state = FFS_IDLE;
     142        ffarch_timer = 0;
     143        ffarch_retry_count = 3;
     144        sdfs_new_status = 0;
     145        sdfs_prev_status = STA_NODISK;
     146
     147        ffarch_timeout();
     148
     149        act_tsk(FFARCH_TASK);
     150
     151        if (romdisk_init()) {
     152                ntstdio_printf(&ntstdio, "ROM disk (0:) OK!\n");
    86153        }
    87154        else {
    88                 printf("SD card (1:) NG!\n");
    89         }
     155                ntstdio_printf(&ntstdio, "ROM disk (0:) NG!\n");
     156        }
     157
     158        serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV);
     159}
     160
     161void ffarch_initialize()
     162{
    90163        sta_cyc(SDFS_CYC);
    91 
    92         if (romdisk_init())
    93                 result = 0;
    94 
    95         if (result == 0) {
    96                 printf("ROM disk (0:) OK!\n");
    97         }
    98         else {
    99                 printf("ROM disk (0:) NG!\n");
    100         }
    101 
    102         /* uploadディレクトリを作成しておく */
    103         f_mkdir("1:/upload");
    104 
    105         serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV);
    106 
    107         return result;
    108164}
    109165
     
    173229                return ramdisk_get_status();
    174230        case 1:
    175                 return sdfs_status(&sdfs);
     231                return sdfs._is_initialized;
    176232        }
    177233        return STA_NOINIT;
     
    200256}
    201257
     258DRESULT sdfs_ioctl(BYTE ctrl, void *buff);
     259
    202260DRESULT disk_ioctl(BYTE pdrv, BYTE cmd, void *buff)
    203261{
     
    206264                return RES_PARERR; /* ramdisk_ioctl(cmd, buff); */
    207265        case 1:
    208                 switch(cmd) {
    209                 case CTRL_SYNC:
    210                         return sdfs_sync(&sdfs);
    211                 case GET_SECTOR_COUNT:
    212                         return sdfs_sectors(&sdfs);
    213                 case GET_BLOCK_SIZE:
    214                         *((DWORD*)buff) = 1; // default when not known
    215                         return RES_OK;
    216                 }
     266                return sdfs_ioctl(cmd, buff);
    217267        }
    218268        return RES_PARERR;
    219269}
    220270
     271DRESULT sdfs_ioctl(BYTE ctrl, void *buff)
     272{
     273        DRESULT res;
     274        uint32_t *dp = (uint32_t *)buff, st, ed;
     275        uint8_t *ptr = (uint8_t *)buff;
     276
     277        if (sdfs._is_initialized & STA_NOINIT)
     278                return RES_NOTRDY;
     279
     280        res = RES_ERROR;
     281
     282        switch (ctrl) {
     283        case CTRL_SYNC:
     284                if (sdfs_sync(&sdfs) == 0) {
     285                        res = RES_OK;
     286                }
     287                break;
     288        case GET_SECTOR_SIZE:
     289                *(WORD*)buff = 512;
     290                res = RES_OK;
     291                break;
     292        case GET_SECTOR_COUNT:
     293                *(DWORD*)buff = sdfs._capacity / 512;
     294                res = RES_OK;
     295                break;
     296        case GET_BLOCK_SIZE:
     297                *(DWORD*)buff = sdfs._block_len;
     298                res = RES_OK;
     299                break;
     300        case CTRL_TRIM:
     301                res = sdfs_trim(&sdfs, dp[0], dp[1]);
     302                break;
     303        case MMC_GET_TYPE:
     304                *ptr = sdfs._card_type;
     305                res = RES_OK;
     306                break;
     307        case MMC_GET_CSD:
     308                memcpy(ptr, sdfs._csd, sizeof(sdfs._csd));
     309                res = RES_OK;
     310                break;
     311        case MMC_GET_CID:
     312                memcpy(ptr, sdfs._cid, sizeof(sdfs._cid));
     313                res = RES_OK;
     314                break;
     315        case MMC_GET_OCR:
     316                if (sdfs_get_ocr(&sdfs, buff) == 0) {
     317                        res = RES_OK;
     318                }
     319                break;
     320        case MMC_GET_SDSTAT:
     321                if (sdfs_get_sdstat(&sdfs, buff) == 0) {
     322                        res = RES_OK;
     323                }
     324                break;
     325        default:
     326                res = RES_PARERR;
     327        }
     328
     329        return res;
     330}
     331
    221332void sdfs_cychdr(intptr_t exinf)
    222333{
    223         BYTE s;
    224 
    225         s = sdfs._is_initialized;
    226         if (WP())               /* Write protected */
     334        BYTE s = 0;
     335             
     336        /* Write protected */
     337        if (WP())
    227338                s |= STA_PROTECT;
    228         else            /* Write enabled */
     339        else
    229340                s &= ~STA_PROTECT;
    230         if (gpio_read(&ins))    /* Card is in socket */
     341
     342        /* Card is in socket */
     343        if (gpio_read(&ins))
     344                s |= (STA_NODISK | STA_NOINIT);
     345        else
    231346                s &= ~STA_NODISK;
    232         else            /* Socket empty */
    233                 s |= (STA_NODISK | STA_NOINIT);
    234         sdfs._is_initialized = s;
     347
     348        sdfs_new_status = s;
     349
     350        if ((sdfs_prev_status != sdfs_new_status) && (ffarch_state == FFS_IDLE)) {
     351                ffarch_timer = 0;
     352                wup_tsk(FFARCH_TASK);
     353        }
     354}
     355
     356int ffarch_get_timer()
     357{
     358        return ffarch_timer;
     359}
     360
     361void ffarch_progress(int elapse)
     362{
     363        if (ffarch_timer != TMO_FEVR) {
     364                ffarch_timer -= elapse;
     365                if (ffarch_timer < 0) {
     366                        ffarch_timer = 0;
     367                }
     368        }
     369}
     370
     371void ffarch_timeout()
     372{
     373        if (ffarch_timer != 0)
     374                return;
     375
     376        switch (ffarch_state) {
     377        case FFS_RETRY_WAIT:
     378                if (ffarch_retry_count == 0) {
     379                        ntstdio_printf(&ntstdio, "SD card (1:) initialize tired...\n");
     380
     381                        ffarch_state = FFS_IDLE;
     382                        ffarch_timer = TMO_FEVR;
     383                        ffarch_retry_count = 3;
     384                        break;
     385                }
     386                ffarch_retry_count--;
     387                //goto case FFS_IDLE;
     388        case FFS_IDLE:
     389                /* SDカードが入れられた場合 */
     390                if ((sdfs._is_initialized & STA_NOINIT)
     391                        || (((sdfs_prev_status & STA_NODISK) != 0) && ((sdfs_new_status & STA_NODISK) == 0))) {
     392                        ntstdio_printf(&ntstdio, "SD card initializing ...\n");
     393
     394                        if (SD_begin()) {
     395                                ntstdio_printf(&ntstdio, "SD card (1:) OK!\n");
     396
     397                                /* uploadディレクトリを作成しておく */
     398                                f_mkdir("1:/upload");
     399
     400                                ffarch_state = FFS_IDLE;
     401                                ffarch_timer = TMO_FEVR;
     402                                ffarch_retry_count = 3;
     403                        }
     404                        else {
     405                                ntstdio_printf(&ntstdio, "SD card (1:) NG!\n");
     406                                ffarch_state = FFS_RETRY_WAIT;
     407                                ffarch_timer = 1000 * 1000;
     408                        }
     409                }
     410                /* SDカードが抜かれた場合 */
     411                else if (((sdfs_prev_status & STA_NODISK) == 0) && ((sdfs_new_status & STA_NODISK) != 0)) {
     412                        ntstdio_printf(&ntstdio, "SD card unmount\n");
     413
     414                        f_mount(&Sd.FatFs, "1:", 0);
     415                        ffarch_state = FFS_IDLE;
     416                        ffarch_timer = TMO_FEVR;
     417                        ffarch_retry_count = 3;
     418                }
     419                if (((sdfs_prev_status ^ sdfs_new_status) & STA_PROTECT) != 0) {
     420                        if ((sdfs_new_status & STA_PROTECT) != 0)
     421                                sdfs._is_initialized |= STA_PROTECT;
     422                        else
     423                                sdfs._is_initialized &= ~STA_PROTECT;
     424                }
     425                sdfs_prev_status = sdfs_new_status;
     426                break;
     427        }
    235428}
    236429
  • asp3_tinet_ecnl_arm/trunk/ntshell/fatfs/ffarch.cfg

    r352 r359  
    3838#include "ffarch.h"
    3939
     40CRE_TSK(FFARCH_TASK, { TA_NULL, 0, ffarch_task, FFARCH_PRIORITY, FFARCH_STACK_SIZE, NULL });
    4041CRE_CYC(SDFS_CYC, { TA_NULL, { TNFY_HANDLER, 0, sdfs_cychdr }, 1000000, 0 });
    4142
  • asp3_tinet_ecnl_arm/trunk/ntshell/fatfs/ffarch.h

    r352 r359  
    3838#define _FFARCH_H_
    3939
    40 int ffarch_init();
     40#define FFARCH_PRIORITY                 5
     41#define FFARCH_STACK_SIZE               512
     42
     43void ffarch_init();
     44void ffarch_task(intptr_t exinf);
     45int ffarch_get_timer();
     46void ffarch_progress(int elapse);
     47void ffarch_timeout();
     48
    4149void sdfs_cychdr(intptr_t exinf);
    4250
  • asp3_tinet_ecnl_arm/trunk/ntshell/fatfs/sdfs.c

    r352 r359  
    115115        */
    116116#include "sdfs.h"
     117#include "diskio.h"
    117118//#include "mbed_debug.h"
    118119#include "mbed_wait_api.h"
    119 
    120 #define debug(str, ...)
    121 #define debug_if(cond, strt, ...) if(cond){ debug(str, __ARGS__); }
     120#include "util/ntstdio.h"
     121
     122extern ntstdio_t ntstdio;
     123#define debug(...) ntstdio_printf(&ntstdio, __VA_ARGS__)
     124#define debug_if(cond, ...) if(cond){ ntstdio_printf(&ntstdio, __VA_ARGS__); }
    122125
    123126static int sdfs_initialise_card_v1(sdfs_t *obj);
     
    144147    obj->_init_sck = 100000;
    145148    obj->_transfer_sck = 1000000;
     149        obj->_is_initialized = STA_NOINIT;
    146150}
    147151
     
    154158#define R1_PARAMETER_ERROR      (1 << 6)
    155159
    156 // Types
    157 #define SDCARD_FAIL 0 //!< v1.x Standard Capacity
    158 #define SDCARD_V1   1 //!< v2.x Standard Capacity
    159 #define SDCARD_V2   2 //!< v2.x High Capacity
    160 #define SDCARD_V2HC 3 //!< Not recognised as an SD Card
    161 
    162160int sdfs_initialise_card(sdfs_t *obj)
    163161{
     
    173171        if (sdfs__cmd(obj, 0, 0) != R1_IDLE_STATE) {
    174172                debug("No disk, or could not put SD card in to SPI idle state\n");
    175                 return SDCARD_FAIL;
     173                return CT_FAIL;
    176174        }
    177175
     
    186184        else {
    187185                debug("Not in idle state after sending CMD8 (not an SD card?)\n");
    188                 return SDCARD_FAIL;
     186                return CT_FAIL;
    189187        }
    190188}
     
    192190static int sdfs_initialise_card_v1(sdfs_t *obj)
    193191{
     192        sdfs__cmd(obj, 55, 0);
     193        if (sdfs__cmd(obj, 41, 0) <= 1) {
     194                obj->cdv = 512;
     195                debug_if(SD_DBG, "\n\rInit: SEDCARD_V1\n\r");
     196                for (int i = 0; i < SD_COMMAND_TIMEOUT; i++) {
     197                        sdfs__cmd(obj, 55, 0);
     198                        if (sdfs__cmd(obj, 41, 0) == 0) {
     199                                break;
     200                        }
     201                }
     202                return CT_SD1;
     203        }
     204        else {
     205                for (int i = 0; i < SD_COMMAND_TIMEOUT; i++) {
     206                        if (sdfs__cmd(obj, 1, 0) == 0)
     207                                break;
     208                }
     209                return CT_MMC;
     210        }
     211        //if (!Timer1 || sdfs__cmd(obj, 16, 512) != 0)  /* Set block length: 512 */
     212        //      ty = 0;
     213
     214        debug("Timeout waiting for v1.x card\n");
     215        return CT_FAIL;
     216}
     217
     218static int sdfs_initialise_card_v2(sdfs_t *obj)
     219{
     220        int n;
     221        uint8_t ocr[4];
     222
     223        /* Get 32 bit return value of R7 resp */
     224        for (n = 0; n < 4; n++) ocr[n] = spi_master_write(&obj->_spi, 0xFF);
    194225        for (int i = 0; i < SD_COMMAND_TIMEOUT; i++) {
    195226                sdfs__cmd(obj, 55, 0);
    196                 if (sdfs__cmd(obj, 41, 0) == 0) {
    197                         obj->cdv = 512;
    198                         debug_if(SD_DBG, "\n\rInit: SEDCARD_V1\n\r");
    199                         return SDCARD_V1;
    200                 }
    201         }
    202 
    203         debug("Timeout waiting for v1.x card\n");
    204         return SDCARD_FAIL;
    205 }
    206 
    207 static int sdfs_initialise_card_v2(sdfs_t *obj)
    208 {
    209         for (int i = 0; i < SD_COMMAND_TIMEOUT; i++) {
     227                if (sdfs__cmd(obj, 41, 0x40000000) == 0) {
     228                        if (sdfs__cmd58(obj) == 0) {
     229                                for (n = 0; n < 4; n++) ocr[n] = spi_master_write(&obj->_spi, 0xFF);
     230                                debug_if(SD_DBG, "\n\rInit: SDCARD_V2\n\r");
     231                                obj->cdv = 1;
     232                                return (ocr[0] & 0x40) ? CT_SD2 | CT_BLOCK : CT_SD2;
     233                        }
     234                }
    210235                wait_ms(50);
    211                 sdfs__cmd58(obj);
    212                 sdfs__cmd(obj, 55, 0);
    213                 if (sdfs__cmd(obj, 41, 0x40000000) == 0) {
    214                         sdfs__cmd58(obj);
    215                         debug_if(SD_DBG, "\n\rInit: SDCARD_V2\n\r");
    216                         obj->cdv = 1;
    217                         return SDCARD_V2;
    218                 }
    219236        }
    220237
    221238        debug("Timeout waiting for v2.x card\n");
    222         return SDCARD_FAIL;
     239        return CT_FAIL;
    223240}
    224241
    225242int sdfs_initialize(sdfs_t *obj)
    226243{
    227         obj->_is_initialized = sdfs_initialise_card(obj);
    228         if (obj->_is_initialized == 0) {
     244        obj->_is_initialized |= STA_NOINIT;
     245
     246        obj->_card_type = sdfs_initialise_card(obj);
     247        if (obj->_card_type == 0) {
    229248                debug("Fail to initialize card\n");
    230249                return 1;
    231250        }
    232         debug_if(SD_DBG, "init card = %d\n", obj->_is_initialized);
     251        debug_if(SD_DBG, "init card = %x\n", obj->_is_initialized);
     252
    233253        obj->_sectors = sdfs__sd_sectors(obj);
     254
     255        if (sdfs__cmdx(obj, 10, 0) != 0         /* READ_CID */
     256                || sdfs__read(obj, obj->_cid, 16) != 0) {
     257                obj->_card_type = CT_FAIL;
     258                debug("Fail to read cid\n");
     259                return 1;
     260        }
    234261
    235262        // Set block length to 512 (CMD16)
    236263        if (sdfs__cmd(obj, 16, 512) != 0) {
     264                obj->_card_type = CT_FAIL;
    237265                debug("Set 512-byte block timed out\n");
    238266                return 1;
    239267        }
     268
     269        obj->_is_initialized &= ~STA_NOINIT;
    240270
    241271        // Set SCK for data transfer
     
    246276int sdfs_write(sdfs_t *obj, const uint8_t *buffer, uint32_t block_number, uint32_t count)
    247277{
    248         if (!obj->_is_initialized) {
     278        if (obj->_is_initialized & (STA_NOINIT | STA_PROTECT)) {
    249279                return -1;
    250280        }
     
    266296int sdfs_read(sdfs_t *obj, uint8_t *buffer, uint32_t block_number, uint32_t count)
    267297{
    268         if (!obj->_is_initialized) {
     298        if (obj->_is_initialized & STA_NOINIT) {
    269299                return -1;
    270300        }
     
    287317{
    288318        // FATFileSystem::disk_status() returns 0 when initialized
    289         if (obj->_is_initialized) {
     319        if ((obj->_is_initialized & STA_NOINIT) == 0) {
    290320                return 0;
    291321        }
     
    294324        }
    295325}
    296 int sdfs_sync(sdfs_t *obj) { return 0; }
     326
    297327uint64_t sdfs_sectors(sdfs_t *obj) { return obj->_sectors; }
    298328
     
    477507{
    478508        uint32_t c_size, c_size_mult, read_bl_len;
    479         uint32_t block_len, mult, blocknr, capacity;
     509        uint32_t mult, blocknr;
    480510        uint32_t hc_c_size;
    481511        uint64_t blocks;
     
    487517        }
    488518
    489         uint8_t csd[16];
    490         if (sdfs__read(obj, csd, 16) != 0) {
     519        if (sdfs__read(obj, obj->_csd, 16) != 0) {
    491520                debug("Couldn't read csd response from disk\n");
    492521                return 0;
     
    498527        // read_bl_len   : csd[83:80] - the *maximum* read block length
    499528
    500         int csd_structure = sdfs_ext_bits(obj, csd, 127, 126);
     529        int csd_structure = sdfs_ext_bits(obj, obj->_csd, 127, 126);
    501530
    502531        switch (csd_structure) {
    503532        case 0:
    504533                obj->cdv = 512;
    505                 c_size = sdfs_ext_bits(obj, csd, 73, 62);
    506                 c_size_mult = sdfs_ext_bits(obj, csd, 49, 47);
    507                 read_bl_len = sdfs_ext_bits(obj, csd, 83, 80);
    508 
    509                 block_len = 1 << read_bl_len;
     534                c_size = sdfs_ext_bits(obj, obj->_csd, 73, 62);
     535                c_size_mult = sdfs_ext_bits(obj, obj->_csd, 49, 47);
     536                read_bl_len = sdfs_ext_bits(obj, obj->_csd, 83, 80);
     537
     538                obj->_block_len = 1 << read_bl_len;
    510539                mult = 1 << (c_size_mult + 2);
    511540                blocknr = (c_size + 1) * mult;
    512                 capacity = blocknr * block_len;
    513                 blocks = capacity / 512;
    514                 debug_if(SD_DBG, "\n\rSDCard\n\rc_size: %d \n\rcapacity: %ld \n\rsectors: %lld\n\r", c_size, capacity, blocks);
     541                obj->_capacity = blocknr * obj->_block_len;
     542                blocks = obj->_capacity / 512;
     543                debug_if(SD_DBG, "\n\rSDCard\n\rc_size: %d \n\rcapacity: %ld \n\rsectors: %lld\n\r", c_size, obj->_capacity, blocks);
    515544                break;
    516545
    517546        case 1:
    518547                obj->cdv = 1;
    519                 hc_c_size = sdfs_ext_bits(obj, csd, 63, 48);
     548                hc_c_size = sdfs_ext_bits(obj, obj->_csd, 63, 48);
    520549                blocks = (hc_c_size + 1) * 1024;
    521550                debug_if(SD_DBG, "\n\rSDHC Card \n\rhc_c_size: %d\n\rcapacity: %lld \n\rsectors: %lld\n\r", hc_c_size, blocks * 512, blocks);
     
    528557        return blocks;
    529558}
     559
     560static
     561int wait_ready(sdfs_t *obj, uint32_t wt)
     562{
     563        /* Wait until card goes ready or timeout */
     564        for (int i = 0; i < wt; i++) {
     565                if (spi_master_write(&obj->_spi, 0xFF) == 0xFF)
     566                        /* Card goes ready */
     567                        return 1;
     568        }
     569
     570        /* Timeout occured */
     571        return 0;
     572}
     573
     574static
     575void deselect(sdfs_t *obj)
     576{
     577        /* Set CS# high */
     578        gpio_write(&obj->_cs, 0);
     579
     580        /* Dummy clock (force DO hi-z for multiple slave SPI) */
     581        spi_master_write(&obj->_spi, 0xFF);
     582}
     583
     584static
     585int select(sdfs_t *obj)
     586{
     587        /* Set CS# low */
     588        gpio_write(&obj->_cs, 1);
     589
     590        /* Dummy clock (force DO enabled) */
     591        spi_master_write(&obj->_spi, 0xFF);
     592
     593        /* Wait for card ready */
     594        if (wait_ready(obj, 500))
     595                return 0;
     596
     597        deselect(obj);
     598
     599        /* Failed to select the card due to timeout */
     600        return -1;
     601}
     602
     603int sdfs_sync(sdfs_t *obj)
     604{
     605        int ret = select(obj);
     606        deselect(obj);
     607        return ret;
     608}
     609
     610int sdfs_trim(sdfs_t *obj, uint32_t st, uint32_t ed)
     611{
     612        int res = -1;
     613
     614        for(;;) {
     615                /* Check if the card is SDC */
     616                if (!(obj->_card_type & CT_SDC))
     617                        break;
     618                /* Check if sector erase can be applied to the card */
     619                if (!(obj->_csd[0] >> 6) && !(obj->_csd[10] & 0x40))
     620                        break;
     621                /* Load sector block */
     622                if (!(obj->_card_type & CT_BLOCK)) {
     623                        st *= 512; ed *= 512;
     624                }
     625                /* Erase sector block */
     626                if ((sdfs__cmd(obj, 32, st) == 0)
     627                        && (sdfs__cmd(obj, 33, ed) == 0)
     628                        && (sdfs__cmd(obj, 38, 0) == 0)
     629                        && wait_ready(obj, 30000))
     630                        res = 0;
     631        }
     632
     633        return res;
     634}
     635
     636int sdfs_get_ocr(sdfs_t *obj, uint8_t buff[4])
     637{
     638        int res = -1, n;
     639
     640        /* READ_OCR */
     641        if (sdfs__cmd58(obj) == 0) {
     642                for (n = 4; n; n--) {
     643                        *buff++ = spi_master_write(&obj->_spi, 0xFF);
     644                }
     645                res = 0;
     646        }
     647
     648        deselect(obj);
     649
     650        return res;
     651}
     652
     653int sdfs_get_sdstat(sdfs_t *obj, uint8_t buff[64])
     654{
     655        int res = -1;
     656
     657        sdfs__cmd(obj, 55, 0);
     658
     659        /* SD_STATUS */
     660        if (sdfs__cmd(obj, 13, 0) == 0) {
     661                spi_master_write(&obj->_spi, 0xFF);
     662                if (sdfs__read(obj, buff, 64) == 0)
     663                        return 0;
     664        }
     665
     666        deselect(obj);
     667
     668        return res;
     669}
  • asp3_tinet_ecnl_arm/trunk/ntshell/fatfs/sdfs.h

    r352 r359  
    3434#endif
    3535
     36/* MMC card type flags (MMC_GET_TYPE) */
     37#define CT_FAIL         0x00
     38#define CT_MMC          0x01            /* MMC ver 3 */
     39#define CT_SD1          0x02            /* SD ver 1 */
     40#define CT_SD2          0x04            /* SD ver 2 */
     41#define CT_SDC          (CT_SD1|CT_SD2) /* SD */
     42#define CT_BLOCK        0x08            /* Block addressing */
     43
    3644/** Access the filesystem on an SD Card using SPI
    3745        *
     
    5159typedef struct sdfs_s{
    5260        const char* name;
     61        volatile uint8_t _is_initialized;
     62        uint8_t _card_type;
     63        uint8_t _csd[16], _cid[16];
     64        uint64_t _capacity;
     65        uint64_t _block_len;
    5366        uint64_t _sectors;
    5467        spi_t _spi;
     
    5770    uint32_t _init_sck;
    5871    uint32_t _transfer_sck;
    59         int _is_initialized;
    6072} sdfs_t;
    6173
     
    7688int sdfs_sync(sdfs_t *obj);
    7789uint64_t sdfs_sectors(sdfs_t *obj);
     90int sdfs_trim(sdfs_t *obj, uint32_t st, uint32_t ed);
     91int sdfs_get_ocr(sdfs_t *obj, uint8_t buff[4]);
     92int sdfs_get_sdstat(sdfs_t *obj, uint8_t buff[64]);
    7893
    7994#ifdef __cplusplus
  • asp3_tinet_ecnl_arm/trunk/ntshell/src/fdtable.c

    r352 r359  
    400400                FD_SET(fd, (fd_set *)&flgptn);
    401401        }
    402         if (rpor.wricnt < rpor.wbufsz) {
     402        if (rpor.wricnt != 0) {
    403403                if (fp->writeevt_w == fp->writeevt_r) fp->writeevt_w++;
    404404
     
    428428                FD_SET(fd, (fd_set *)flgptn);
    429429        }
    430         if (rpor.wricnt < rpor.wbufsz) {
     430        if (rpor.wricnt != 0) {
    431431                if (fp->writeevt_w == fp->writeevt_r) fp->writeevt_w++;
    432432
  • asp3_tinet_ecnl_arm/trunk/ntshell/src/net_misc.c

    r352 r359  
    6060#include "kernel_cfg.h"
    6161#include "tinet_cfg.h"
     62#include "util/ntstdio.h"
     63
     64extern ntstdio_t ntstdio;
    6265
    6366T_DHCP4_CLI_CONTEXT *dhcp4_cli_initialize(ID tskid, ID cepid);
     
    9497
    9598        get_tid(&nc->tskid);
    96         syslog(LOG_NOTICE, "[NET MISC:%d,%d] started.", nc->tskid, (ID)exinf);
     99        ntstdio_printf(&ntstdio, "[NET MISC:%d,%d] started.", nc->tskid, (ID)exinf);
    97100
    98101        /* 初期化 */
     
    102105        ret = get_tim(&time);
    103106        if (ret != E_OK) {
    104                 syslog(LOG_NOTICE, "[NET MISC,%d] get_tim error: %7lu,%s",
     107                ntstdio_printf(&ntstdio, "[NET MISC,%d] get_tim error: %7lu,%s",
    105108                        nc->cepid, time / SYSTIM_HZ, itron_strerror(ret));
    106109                return;
     
    116119                error = tslp_tsk(timer);
    117120                if ((error != E_OK) && (error != E_TMOUT)) {
    118                         syslog(LOG_NOTICE, "[NET MISC,%d] tslp_tsk error: %s %d",
     121                        ntstdio_printf(&ntstdio, "[NET MISC,%d] tslp_tsk error: %s %d",
    119122                                nc->cepid, itron_strerror(error), timer);
    120123                        break;
     
    123126                ret = get_tim(&time);
    124127                if (ret != E_OK) {
    125                         syslog(LOG_NOTICE, "[NET MISC,%d] get_tim error: %s",
     128                        ntstdio_printf(&ntstdio, "[NET MISC,%d] get_tim error: %s",
    126129                                nc->cepid, itron_strerror(ret));
    127130                        break;
  • asp3_tinet_ecnl_arm/trunk/ntshell/src/ntp_cli.c

    r352 r359  
    5050#include <t_syslog.h>
    5151#include "kernel_cfg.h"
     52#include "util/ntstdio.h"
     53
     54extern ntstdio_t ntstdio;
    5255
    5356#endif  /* of #if defined(TARGET_KERNEL_ASP) */
     
    276279        }
    277280
    278         syslog(LOG_NOTICE, "[NTP CLI,%d] recv time: %s .%09u",
     281        ntstdio_printf(&ntstdio, "[NTP CLI,%d] recv time: %s .%09u\n",
    279282                nc->cepid, nc->buf, tp.tv_nsec);
    280283}
     
    308311                line = lookup_ipaddr(&nc->ipaddr6, NTP_SRV_URL, API_PROTO_IPV4);
    309312                if (line == NULL || !in6_is_addr_ipv4mapped(&nc->ipaddr6)) {
    310                         syslog(LOG_NOTICE, "[NTP CLI,%d] sleep %d.%03u[s], unknown host.",
     313                        ntstdio_printf(&ntstdio, "[NTP CLI,%d] sleep %d.%03u[s], unknown host.",
    311314                                nc->cepid, SLP_ITV / SYSTIM_HZ, SLP_ITV % SYSTIM_HZ);
    312315                        nc->timer = SLP_ITV;
     
    316319#else   /* of #if defined(SUPPORT_INET6) && defined(SUPPORT_INET4) */
    317320                if ((line = lookup_ipaddr(&nc->snd_rmt.ipaddr, NTP_SRV_URL, DEFAULT_API_PROTO)) == NULL) {
    318                         syslog(LOG_NOTICE, "[NTP CLI,%d] sleep %d.%03u[s], unknown host.",
     321                        ntstdio_printf(&ntstdio, "[NTP CLI,%d] sleep %d.%03u[s], unknown host.",
    319322                                nc->cepid, SLP_ITV / SYSTIM_HZ, SLP_ITV % SYSTIM_HZ);
    320323                        nc->timer = SLP_ITV;
     
    420423
    421424        if ((error = udp_snd_dat(nc->cepid, &nc->snd_rmt, ntp, len, TMO_NBLK)) != E_WBLK) {
    422                 syslog(LOG_NOTICE, "[NTP CLI,%d] udp_snd_dat error: %s",
     425                ntstdio_printf(&ntstdio, "[NTP CLI,%d] udp_snd_dat error: %s",
    423426                        nc->cepid, itron_strerror(error));
    424427                return error;
     
    438441        ret = get_tim(&time);
    439442        if (ret != E_OK) {
    440                 syslog(LOG_NOTICE, "[NTP CLI,%d] get_tim error: %s",
     443                ntstdio_printf(&ntstdio, "[NTP CLI,%d] get_tim error: %s",
    441444                        nc->cepid, itron_strerror(ret));
    442445                tp->tv_sec = 0;
     
    458461        ret = set_tim(time);
    459462        if (ret != E_OK) {
    460                 syslog(LOG_NOTICE, "[NTP CLI,%d] set_tim error: %s",
     463                ntstdio_printf(&ntstdio, "[NTP CLI,%d] set_tim error: %s",
    461464                        nc->cepid, itron_strerror(ret));
    462465        }
     
    476479        if (len < 0 && len != E_RLWAI) {
    477480                /* E_RLWAI 以外で、0 以下の場合は、エラーを意味している。*/
    478                 syslog(LOG_NOTICE, "[NTP CLI,%d] callback error: %s, fncd: %s", nc->cepid,
     481                ntstdio_printf(&ntstdio, "[NTP CLI,%d] callback error: %s, fncd: %s", nc->cepid,
    479482                        itron_strerror(len), in_strtfn(fncd));
    480483        }
     
    483486                        if ((len = udp_rcv_dat(nc->cepid, &nc->rcv_rmt, &nc->ntp_msg, len, TMO_POL)) < 0)
    484487                        {
    485                                 syslog(LOG_NOTICE, "[NTP CLI,%d] udp_rcv_dat error: %s", nc->cepid,
     488                                ntstdio_printf(&ntstdio, "[NTP CLI,%d] udp_rcv_dat error: %s", nc->cepid,
    486489                                        itron_strerror(len));
    487490                        }
     
    515518
    516519        get_tid(&nc->tskid);
    517         syslog(LOG_NOTICE, "[NTP CLI:%d,%d] started.", nc->tskid, (ID)exinf);
     520        ntstdio_printf(&ntstdio, "[NTP CLI:%d,%d] started.", nc->tskid, (ID)exinf);
    518521
    519522        /* 初期化 */
     
    522525        ret = get_tim(&time);
    523526        if (ret != E_OK) {
    524                 syslog(LOG_NOTICE, "[NTP CLI,%d] get_tim error: %7lu,%s",
     527                ntstdio_printf(&ntstdio, "[NTP CLI,%d] get_tim error: %7lu,%s",
    525528                        nc->cepid, time / SYSTIM_HZ, itron_strerror(ret));
    526529                return;
     
    536539                error = tslp_tsk(timer);
    537540                if ((error != E_OK) && (error != E_TMOUT)) {
    538                         syslog(LOG_NOTICE, "[NTP CLI,%d] tslp_tsk error: %s %d",
     541                        ntstdio_printf(&ntstdio, "[NTP CLI,%d] tslp_tsk error: %s %d",
    539542                                nc->cepid, itron_strerror(error), timer);
    540543                        break;
     
    543546                ret = get_tim(&time);
    544547                if (ret != E_OK) {
    545                         syslog(LOG_NOTICE, "[NTP CLI,%d] get_tim error: %s",
     548                        ntstdio_printf(&ntstdio, "[NTP CLI,%d] get_tim error: %s",
    546549                                nc->cepid, itron_strerror(ret));
    547550                        break;
  • asp3_tinet_ecnl_rx/trunk/app1_usb_watt_meter/src/main.c

    r349 r359  
    215215
    216216        /* 初期化 */
    217         if (ffarch_init() == 0) {
    218                 gpio_write(&led_blue, 0);
    219         }
    220         else {
    221                 gpio_write(&led_blue, 0);
    222                 gpio_write(&led_red, 1);
    223         }
     217        ffarch_init();
    224218
    225219        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_rx/trunk/app1_usb_watt_meter/src/tinet_app_config.h

    r342 r359  
    2929 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    3030 *
    31  *  @(#) $Id: tinet_app_config.h 1505 2018-04-17 11:22:02Z coas-nagasima $
     31 *  @(#) $Id$
    3232 */
    3333
  • asp3_tinet_ecnl_rx/trunk/app2_light/src/main.c

    r349 r359  
    207207
    208208        /* 初期化 */
    209         if (ffarch_init() == 0) {
    210                 gpio_write(&led_blue, 0);
    211         }
    212         else {
    213                 gpio_write(&led_blue, 0);
    214                 gpio_write(&led_red, 1);
    215         }
     209        ffarch_init();
    216210
    217211        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_rx/trunk/app2_light/src/tinet_app_config.h

    r342 r359  
    2929 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    3030 *
    31  *  @(#) $Id: tinet_app_config.h 1505 2018-04-17 11:22:02Z coas-nagasima $
     31 *  @(#) $Id$
    3232 */
    3333
  • asp3_tinet_ecnl_rx/trunk/app3_human_detec/src/main.c

    r349 r359  
    207207
    208208        /* 初期化 */
    209         if (ffarch_init() == 0) {
    210                 gpio_write(&led_blue, 0);
    211         }
    212         else {
    213                 gpio_write(&led_blue, 0);
    214                 gpio_write(&led_red, 1);
    215         }
     209        ffarch_init();
    216210
    217211        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_rx/trunk/app3_human_detec/src/tinet_app_config.h

    r342 r359  
    2929 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    3030 *
    31  *  @(#) $Id: tinet_app_config.h 1505 2018-04-17 11:22:02Z coas-nagasima $
     31 *  @(#) $Id$
    3232 */
    3333
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/src/main.c

    r349 r359  
    207207
    208208        /* 初期化 */
    209         if (ffarch_init() == 0) {
    210                 gpio_write(&led_blue, 0);
    211         }
    212         else {
    213                 gpio_write(&led_blue, 0);
    214                 gpio_write(&led_red, 1);
    215         }
     209        ffarch_init();
    216210
    217211        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/src/tinet_app_config.h

    r342 r359  
    2929 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    3030 *
    31  *  @(#) $Id: tinet_app_config.h 1505 2018-04-17 11:22:02Z coas-nagasima $
     31 *  @(#) $Id$
    3232 */
    3333
  • asp3_tinet_ecnl_rx/trunk/app5_temp_sensor/src/main.c

    r349 r359  
    207207
    208208        /* 初期化 */
    209         if (ffarch_init() == 0) {
    210                 gpio_write(&led_blue, 0);
    211         }
    212         else {
    213                 gpio_write(&led_blue, 0);
    214                 gpio_write(&led_red, 1);
    215         }
     209        ffarch_init();
    216210
    217211        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_rx/trunk/app5_temp_sensor/src/tinet_app_config.h

    r342 r359  
    2929 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    3030 *
    31  *  @(#) $Id: tinet_app_config.h 1505 2018-04-17 11:22:02Z coas-nagasima $
     31 *  @(#) $Id$
    3232 */
    3333
  • asp3_tinet_ecnl_rx/trunk/app6_hot_water_pot/src/main.c

    r349 r359  
    207207
    208208        /* 初期化 */
    209         if (ffarch_init() == 0) {
    210                 gpio_write(&led_blue, 0);
    211         }
    212         else {
    213                 gpio_write(&led_blue, 0);
    214                 gpio_write(&led_red, 1);
    215         }
     209        ffarch_init();
    216210
    217211        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_rx/trunk/app6_hot_water_pot/src/tinet_app_config.h

    r342 r359  
    2929 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    3030 *
    31  *  @(#) $Id: tinet_app_config.h 1505 2018-04-17 11:22:02Z coas-nagasima $
     31 *  @(#) $Id$
    3232 */
    3333
  • asp3_tinet_ecnl_rx/trunk/app7_buzzer/src/main.c

    r349 r359  
    207207
    208208        /* 初期化 */
    209         if (ffarch_init() == 0) {
    210                 gpio_write(&led_blue, 0);
    211         }
    212         else {
    213                 gpio_write(&led_blue, 0);
    214                 gpio_write(&led_red, 1);
    215         }
     209        ffarch_init();
    216210
    217211        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_rx/trunk/app7_buzzer/src/tinet_app_config.h

    r342 r359  
    2929 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    3030 *
    31  *  @(#) $Id: tinet_app_config.h 1505 2018-04-17 11:22:02Z coas-nagasima $
     31 *  @(#) $Id$
    3232 */
    3333
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/arch/rx630_gcc/prc_kernel_impl.c

    r342 r359  
    3939 *  の責任を負わない.
    4040 *
    41  *  @(#) $Id: prc_kernel_impl.c 1518 2018-04-24 00:37:16Z coas-nagasima $
     41 *  @(#) $Id$
    4242 */
    4343
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/syssvc/serial.h

    r337 r359  
    6060        uint_t          reacnt;                 /* 受信バッファ中の文字数 */
    6161        uint_t          wricnt;                 /* 送信バッファ中の文字数 */
    62         uint_t          wbufsz;                 /* 送信バッファサイズ */
    6362} T_SERIAL_RPOR;
    6463
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/syssvc/tSerialPortMain.c

    r342 r359  
    504504        pk_rpor->reacnt = VAR_receiveCount;
    505505        pk_rpor->wricnt = VAR_sendCount;
    506         pk_rpor->wbufsz = ATTR_sendBufferSize;
    507506        return(E_OK);
    508507}
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/Makefile

    r337 r359  
    3434#   の責任を負わない.
    3535
    36 #   $Id: Makefile 2640 2017-06-03 11:27:12Z okuma-top $
     36#   $Id$
    3737#++
    3838
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/TECSPointer.h

    r337 r359  
    3333 *   の責任を負わない.
    3434 * 
    35  *   $Id: TECSPointer.h 2637 2017-05-08 10:30:59Z okuma-top $
     35 *   $Id$
    3636 */
    3737
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/TECSStruct.h

    r337 r359  
    3333 *   の責任を負わない.
    3434 * 
    35  *   $Id: TECSStruct.h 2634 2017-04-08 12:28:00Z okuma-top $
     35 *   $Id$
    3636 */
    3737
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/mruby.cdl

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: mruby.cdl 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/mrubyInitializer.cdl

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: mrubyInitializer.cdl 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/mrubyPointers.cdl

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: mrubyPointers.cdl 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/mrubyVMs.cdl

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: mrubyVMs.cdl 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tBoolPointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tBoolPointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tCharPointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tCharPointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tDouble64Pointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tDouble64Pointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tFloat32Pointer.c

    r337 r359  
    3131 *   *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tFloat32Pointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tInt16Pointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tInt16Pointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tInt32Pointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tInt32Pointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tInt64Pointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tInt64Pointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tInt8Pointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tInt8Pointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tIntPointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tIntPointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tLongPointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tLongPointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tMruby.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tMruby.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tSCharPointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tSCharPointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tShortPointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tShortPointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tTECSInitializer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tTECSInitializer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tUCharPointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tUCharPointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tUInt16Pointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tUInt16Pointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tUInt32Pointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tUInt32Pointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tUInt64Pointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tUInt64Pointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tUInt8Pointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tUInt8Pointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tUIntPointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tUIntPointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tULongPointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tULongPointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/nMruby_tUShortPointer.c

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: nMruby_tUShortPointer.c 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/tMruby.cdl

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: tMruby.cdl 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535//import(<syssvc/tSerialPort.cdl>);
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/mruby/tecs_mruby.h

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: tecs_mruby.h 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/posix/posix.cdl

    r337 r359  
    3131 *  の責任を負わない.
    3232 *
    33  *  @(#) $Id: posix.cdl 2640 2017-06-03 11:27:12Z okuma-top $
     33 *  @(#) $Id$
    3434 */
    3535
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/rpc/tTINETClient.c

    r337 r359  
    3434 *   の責任を負わない.
    3535 * 
    36  *   $Id: tTINETClient.c 2027 2014-01-20 08:36:17Z okuma-top $
     36 *   $Id$
    3737 */
    3838
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecs/rpc/tTINETServer.c

    r337 r359  
    3434 *   の責任を負わない.
    3535 * 
    36  *   $Id: tTINETServer.c 2027 2014-01-20 08:36:17Z okuma-top $
     36 *   $Id$
    3737 */
    3838
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecsgen.rb

    r337 r359  
    3636#   の責任を負わない.
    3737
    38 #   $Id: tecsgen.rb 2638 2017-05-29 14:05:52Z okuma-top $
     38#   $Id$
    3939#++
    4040
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/C_parser.y.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: C_parser.y.rb 2633 2017-04-02 06:02:05Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/bnf.y.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: bnf.y.rb 2633 2017-04-02 06:02:05Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/componentobj.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: componentobj.rb 2638 2017-05-29 14:05:52Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/ctypes.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: ctypes.rb 2622 2017-01-04 13:19:33Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/expression.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: expression.rb 2633 2017-04-02 06:02:05Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/generate.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: generate.rb 2633 2017-04-02 06:02:05Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/messages.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: messages.rb 2633 2017-04-02 06:02:05Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/optimize.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: optimize.rb 2633 2017-04-02 06:02:05Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/plugin.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: plugin.rb 2633 2017-04-02 06:02:05Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/pluginModule.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: pluginModule.rb 2633 2017-04-02 06:02:05Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/syntaxobj.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: syntaxobj.rb 2633 2017-04-02 06:02:05Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/tecsgen.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: tecsgen.rb 2638 2017-05-29 14:05:52Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/tecsinfo.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: tecsinfo.rb 2640 2017-06-03 11:27:12Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/tool_info.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: tool_info.rb 2640 2017-06-03 11:27:12Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/core/types.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: types.rb 2633 2017-04-02 06:02:05Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/messages/messages_console_en_US.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: messages_console_en_US.rb 2633 2017-04-02 06:02:05Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/messages/messages_console_ja_JP.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: messages_console_ja_JP.rb 2633 2017-04-02 06:02:05Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/messages/messages_file_en_US.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: messages_file_en_US.rb 2587 2016-07-31 13:26:28Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/messages/messages_file_ja_JP.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: messages_file_ja_JP.rb 2587 2016-07-31 13:26:28Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/plugin/CompositePlugin.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: CelltypePlugin.rb 2635 2017-04-16 02:37:16Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2AlarmHandlerPlugin.rb

    r337 r359  
    3535#   の責任を負わない.
    3636#
    37 #   $Id: HRP2AlarmHandlerPlugin.rb 2640 2017-06-03 11:27:12Z okuma-top $
     37#   $Id$
    3838
    3939#++
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2CyclicHandlerPlugin.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: HRP2CyclicHandlerPlugin.rb 2640 2017-06-03 11:27:12Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2HandlerPlugin.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: HRP2HandlerPlugin.rb 2640 2017-06-03 11:27:12Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2KernelObjectPlugin.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: HRP2KernelObjectPlugin.rb 2640 2017-06-03 11:27:12Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2Plugin.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: HRP2Plugin.rb 2640 2017-06-03 11:27:12Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2TaskPlugin.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: HRP2TaskPlugin.rb 2640 2017-06-03 11:27:12Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgePlugin.rb

    r337 r359  
    3434#   の責任を負わない.
    3535
    36 #   $Id: MrubyBridgePlugin.rb 2638 2017-05-29 14:05:52Z okuma-top $
     36#   $Id$
    3737#
    3838
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/plugin/MultiPlugin.rb

    r337 r359  
    3535#   の責任を負わない.
    3636
    37 #   $Id: MultiPlugin.rb 2640 2017-06-03 11:27:12Z okuma-top $
     37#   $Id$
    3838#++
    3939
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/plugin/NotifierPlugin.rb

    r337 r359  
    5959        #  - アダプタ関数の引数
    6060        #
    61         #   $Id: NotifierPlugin.rb 2640 2017-06-03 11:27:12Z okuma-top $
     61        #   $Id$
    6262
    6363        # @private
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecsmerge.rb

    r337 r359  
    3737#   の責任を負わない.
    3838
    39 #   $Id: tecsmerge.rb 2633 2017-04-02 06:02:05Z okuma-top $
     39#   $Id$
    4040#++
    4141
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/net/ethernet.c

    r342 r359  
    2929 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    3030 *
    31  *  @(#) $Id: ethernet.c 1524 2018-04-25 13:48:23Z coas-nagasima $
     31 *  @(#) $Id$
    3232 */
    3333
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/net/ethernet.h

    r342 r359  
    2929 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    3030 *
    31  *  @(#) $Id: ethernet.h 1524 2018-04-25 13:48:23Z coas-nagasima $
     31 *  @(#) $Id$
    3232 */
    3333
  • asp3_tinet_ecnl_rx/trunk/bnep_bridge/src/main.c

    r342 r359  
    192192
    193193        /* 初期化 */
    194         if (ffarch_init() == 0) {
    195                 gpio_write(&led_blue, 0);
    196         }
    197         else {
    198                 gpio_write(&led_blue, 0);
    199                 gpio_write(&led_red, 1);
    200         }
     194        ffarch_init();
    201195
    202196        gpio_write(&led_green, 0);
  • asp3_tinet_ecnl_rx/trunk/ntshell/fatfs/ffarch.c

    r337 r359  
    5454#include "mbed_api.h"
    5555
    56 //extern ntstdio_t ntstdio;
     56extern ntstdio_t ntstdio;
     57
     58enum ffarch_state_t {
     59        FFS_IDLE,
     60        FFS_RETRY_WAIT,
     61};
     62
     63enum ffarch_state_t ffarch_state;
     64volatile int ffarch_timer;
     65int ffarch_retry_count;
     66uint8_t mmc_rspi_prev_status;
     67
     68static void ffarch_initialize();
     69
     70/*
     71 * FatFSタスク
     72 */
     73void ffarch_task(intptr_t exinf)
     74{
     75        ER ret, ret2;
     76        SYSTIM prev, now;
     77        int timer;
     78
     79        ffarch_initialize();
     80
     81        ret2 = get_tim(&now);
     82        if (ret2 != E_OK){
     83                ntstdio_printf(&ntstdio, "[ffarch] get_tim error: %s",
     84                        itron_strerror(ret2));
     85                return;
     86        }
     87
     88        for(;;){
     89                prev = now;
     90
     91                /* タイマー取得 */
     92                timer = ffarch_get_timer();
     93
     94                /* 待ち */
     95                ret = tslp_tsk(timer);
     96                if ((ret != E_OK) && (ret != E_TMOUT)) {
     97                        ntstdio_printf(&ntstdio, "[ffarch] tslp_tsk error: %s %d",
     98                                itron_strerror(ret), timer);
     99                        break;
     100                }
     101
     102                ret2 = get_tim(&now);
     103                if (ret2 != E_OK) {
     104                        ntstdio_printf(&ntstdio, "[ffarch] get_tim error: %s",
     105                                itron_strerror(ret2));
     106                        break;
     107                }
     108
     109                /* 時間経過 */
     110                int elapse = now - prev;
     111                ffarch_progress(elapse);
     112
     113                /* タイムアウト処理 */
     114                ffarch_timeout();
     115        }
     116}
    57117
    58118FATFS RomDisk;
     
    88148        //sdfs_init(&sdfs, P8_5, P8_6, P8_3, P8_4, "sd");
    89149
    90         result = SD_begin() ? 0 : -1;
    91         if (result == 0) {
    92                 printf("SD card (1:) OK!\n");
     150        ffarch_state = FFS_IDLE;
     151        ffarch_timer = 0;
     152        ffarch_retry_count = 3;
     153        mmc_rspi_prev_status = STA_NODISK;
     154
     155        ffarch_timeout();
     156
     157        act_tsk(FFARCH_TASK);
     158
     159        if (romdisk_init()) {
     160                ntstdio_printf(&ntstdio, "ROM disk (0:) OK!\n");
    93161        }
    94162        else {
    95                 printf("SD card (1:) NG!\n");
    96         }
     163                ntstdio_printf(&ntstdio, "ROM disk (0:) NG!\n");
     164        }
     165
     166        serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV);
     167}
     168
     169void ffarch_initialize()
     170{
    97171        sta_cyc(MMC_RSPI_CYC);
    98 
    99         if (romdisk_init())
    100                 result = 0;
    101 
    102         if (result == 0) {
    103                 printf("ROM disk (0:) OK!\n");
    104         }
    105         else {
    106                 printf("ROM disk (0:) NG!\n");
    107         }
    108 
    109         /* uploadディレクトリを作成しておく */
    110         f_mkdir("1:/upload");
    111 
    112         serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV);
    113 
    114         return result;
    115172}
    116173
     
    216273        }
    217274        return RES_PARERR;
     275}
     276
     277void mmc_rspi_status_changed(DSTATUS newst)
     278{
     279        if (ffarch_state == FFS_IDLE) {
     280                mmc_rspi_prev_status = mmc_rspi_status();
     281                ffarch_timer = 0;
     282                wup_tsk(FFARCH_TASK);
     283        }
     284}
     285
     286int ffarch_get_timer()
     287{
     288        return ffarch_timer;
     289}
     290
     291void ffarch_progress(int elapse)
     292{
     293        if (ffarch_timer != TMO_FEVR) {
     294                ffarch_timer -= elapse;
     295                if (ffarch_timer < 0) {
     296                        ffarch_timer = 0;
     297                }
     298        }
     299}
     300
     301void ffarch_timeout()
     302{
     303        if (ffarch_timer != 0)
     304                return;
     305
     306        switch (ffarch_state) {
     307        case FFS_RETRY_WAIT:
     308                if (ffarch_retry_count == 0) {
     309                        ntstdio_printf(&ntstdio, "SD card (1:) initialize tired...\n");
     310
     311                        ffarch_state = FFS_IDLE;
     312                        ffarch_timer = TMO_FEVR;
     313                        ffarch_retry_count = 3;
     314                        break;
     315                }
     316                ffarch_retry_count--;
     317                //goto case FFS_IDLE;
     318        case FFS_IDLE:
     319                /* SDカードが入れられた場合 */
     320                if (((mmc_rspi_prev_status & STA_NODISK) != 0) && ((mmc_rspi_status() & STA_NODISK) == 0)) {
     321                        ntstdio_printf(&ntstdio, "SD card initializing ...\n");
     322
     323                        Sd.FatFs.fs_type = 0;
     324                        if (SD_begin()) {
     325                                ntstdio_printf(&ntstdio, "SD card (1:) OK!\n");
     326
     327                                /* uploadディレクトリを作成しておく */
     328                                f_mkdir("1:/upload");
     329
     330                                ffarch_state = FFS_IDLE;
     331                                ffarch_timer = TMO_FEVR;
     332                                ffarch_retry_count = 3;
     333                        }
     334                        else {
     335                                ntstdio_printf(&ntstdio, "SD card (1:) NG!\n");
     336                                ffarch_state = FFS_RETRY_WAIT;
     337                                ffarch_timer = 1000 * 1000;
     338                        }
     339                }
     340                /* SDカードが抜かれた場合 */
     341                else if (((mmc_rspi_prev_status & STA_NODISK) == 0) && ((mmc_rspi_status() & STA_NODISK) != 0)) {
     342                        ntstdio_printf(&ntstdio, "SD card unmount\n");
     343
     344                        f_mount(&Sd.FatFs, "1:", 0);
     345                        ffarch_state = FFS_IDLE;
     346                        ffarch_timer = TMO_FEVR;
     347                        ffarch_retry_count = 3;
     348                }
     349                mmc_rspi_prev_status = mmc_rspi_status();
     350                break;
     351        }
    218352}
    219353
  • asp3_tinet_ecnl_rx/trunk/ntshell/fatfs/ffarch.cfg

    r337 r359  
    3838#include "ffarch.h"
    3939
     40CRE_TSK(FFARCH_TASK, { TA_NULL, 0, ffarch_task, FFARCH_PRIORITY, FFARCH_STACK_SIZE, NULL });
    4041INCLUDE("mmc_rspi.cfg");
    4142
  • asp3_tinet_ecnl_rx/trunk/ntshell/fatfs/ffarch.h

    r337 r359  
    3838#define _FFARCH_H_
    3939
    40 int ffarch_init();
     40#define FFARCH_PRIORITY                 5
     41#define FFARCH_STACK_SIZE               512
     42
     43void ffarch_init();
     44void ffarch_task(intptr_t exinf);
     45int ffarch_get_timer();
     46void ffarch_progress(int elapse);
     47void ffarch_timeout();
     48
    4149void sdfs_cychdr(intptr_t exinf);
    4250
  • asp3_tinet_ecnl_rx/trunk/ntshell/fatfs/mmc_rspi.c

    r343 r359  
    201201        ena_int(INTNO_MMC_RSPI_SPII);
    202202
    203         sta_cyc(MMC_RSPI_CYC);
     203        /*sta_cyc(MMC_RSPI_CYC);*/
    204204}
    205205
     
    211211void power_off(void)    /* Disable MMC/SDC interface */
    212212{
    213         stp_cyc(MMC_RSPI_CYC);
     213        /*stp_cyc(MMC_RSPI_CYC);*/
    214214
    215215        dis_int(INTNO_MMC_RSPI_SPRI);
     
    745745        else            /* Socket empty */
    746746                s |= (STA_NODISK | STA_NOINIT);
    747         Stat = s;
     747
     748        if (Stat != s) {
     749                mmc_rspi_status_changed(s);
     750                Stat = s;
     751        }
    748752}
    749753
  • asp3_tinet_ecnl_rx/trunk/ntshell/fatfs/mmc_rspi.h

    r337 r359  
    6767#endif
    6868
    69 extern void mmc_rspi_spri_handler(void);
    70 extern void mmc_rspi_spti_handler(void);
    71 extern void mmc_rspi_spii_handler(void);
    72 extern void mmc_rspi_cychdr(intptr_t exinf);
     69void mmc_rspi_spri_handler(void);
     70void mmc_rspi_spti_handler(void);
     71void mmc_rspi_spii_handler(void);
     72void mmc_rspi_cychdr(intptr_t exinf);
     73void mmc_rspi_status_changed(DSTATUS newst);
    7374
    7475#endif /* _MMC_RSPI_H_ */
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/fdtable.c

    r337 r359  
    400400                FD_SET(fd, (fd_set *)&flgptn);
    401401        }
    402         if (rpor.wricnt < rpor.wbufsz) {
     402        if (rpor.wricnt != 0) {
    403403                if (fp->writeevt_w == fp->writeevt_r) fp->writeevt_w++;
    404404
     
    428428                FD_SET(fd, (fd_set *)flgptn);
    429429        }
    430         if (rpor.wricnt < rpor.wbufsz) {
     430        if (rpor.wricnt != 0) {
    431431                if (fp->writeevt_w == fp->writeevt_r) fp->writeevt_w++;
    432432
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/net_misc.c

    r340 r359  
    3333 *  の責任を負わない.
    3434 *
    35  *  @(#) $Id: net_misc.c 1497 2018-04-13 00:04:30Z coas-nagasima $
     35 *  @(#) $Id$
    3636 */
    3737
     
    6060#include "kernel_cfg.h"
    6161#include "tinet_cfg.h"
     62#include "util/ntstdio.h"
     63
     64extern ntstdio_t ntstdio;
    6265
    6366T_DHCP4_CLI_CONTEXT *dhcp4_cli_initialize(ID tskid, ID cepid);
     
    9497
    9598        get_tid(&nc->tskid);
    96         syslog(LOG_NOTICE, "[NET MISC:%d,%d] started.", nc->tskid, (ID)exinf);
     99        ntstdio_printf(&ntstdio, "[NET MISC:%d,%d] started.", nc->tskid, (ID)exinf);
    97100
    98101        /* 初期化 */
     
    102105        ret = get_tim(&time);
    103106        if (ret != E_OK) {
    104                 syslog(LOG_NOTICE, "[NET MISC,%d] get_tim error: %7lu,%s",
     107                ntstdio_printf(&ntstdio, "[NET MISC,%d] get_tim error: %7lu,%s",
    105108                        nc->cepid, time / SYSTIM_HZ, itron_strerror(ret));
    106109                return;
     
    116119                error = tslp_tsk(timer);
    117120                if ((error != E_OK) && (error != E_TMOUT)) {
    118                         syslog(LOG_NOTICE, "[NET MISC,%d] tslp_tsk error: %s %d",
     121                        ntstdio_printf(&ntstdio, "[NET MISC,%d] tslp_tsk error: %s %d",
    119122                                nc->cepid, itron_strerror(error), timer);
    120123                        break;
     
    123126                ret = get_tim(&time);
    124127                if (ret != E_OK) {
    125                         syslog(LOG_NOTICE, "[NET MISC,%d] get_tim error: %s",
     128                        ntstdio_printf(&ntstdio, "[NET MISC,%d] get_tim error: %s",
    126129                                nc->cepid, itron_strerror(ret));
    127130                        break;
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/net_misc.cfg

    r340 r359  
    3333 *  の責任を負わない.
    3434 *
    35  *  @(#) $Id: net_misc.cfg 1497 2018-04-13 00:04:30Z coas-nagasima $
     35 *  @(#) $Id$
    3636 */
    3737
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/net_misc.h

    r340 r359  
    3333 *  の責任を負わない.
    3434 *
    35  *  @(#) $Id: net_misc.h 1497 2018-04-13 00:04:30Z coas-nagasima $
     35 *  @(#) $Id$
    3636 */
    3737
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/ntp_cli.c

    r340 r359  
    3333 *  の責任を負わない.
    3434 *
    35  *  @(#) $Id: ntp_cli.c 1496 2018-04-12 11:59:40Z coas-nagasima $
     35 *  @(#) $Id$
    3636 */
    3737
     
    5050#include <t_syslog.h>
    5151#include "kernel_cfg.h"
     52#include "util/ntstdio.h"
     53
     54extern ntstdio_t ntstdio;
    5255
    5356#endif  /* of #if defined(TARGET_KERNEL_ASP) */
     
    276279        }
    277280
    278         syslog(LOG_NOTICE, "[NTP CLI,%d] recv time: %s .%09u",
     281        ntstdio_printf(&ntstdio, "[NTP CLI,%d] recv time: %s .%09u\n",
    279282                nc->cepid, nc->buf, tp.tv_nsec);
    280283}
     
    308311                line = lookup_ipaddr(&nc->ipaddr6, NTP_SRV_URL, API_PROTO_IPV4);
    309312                if (line == NULL || !in6_is_addr_ipv4mapped(&nc->ipaddr6)) {
    310                         syslog(LOG_NOTICE, "[NTP CLI,%d] sleep %d.%03u[s], unknown host.",
     313                        ntstdio_printf(&ntstdio, "[NTP CLI,%d] sleep %d.%03u[s], unknown host.",
    311314                                nc->cepid, SLP_ITV / SYSTIM_HZ, SLP_ITV % SYSTIM_HZ);
    312315                        nc->timer = SLP_ITV;
     
    316319#else   /* of #if defined(SUPPORT_INET6) && defined(SUPPORT_INET4) */
    317320                if ((line = lookup_ipaddr(&nc->snd_rmt.ipaddr, NTP_SRV_URL, DEFAULT_API_PROTO)) == NULL) {
    318                         syslog(LOG_NOTICE, "[NTP CLI,%d] sleep %d.%03u[s], unknown host.",
     321                        ntstdio_printf(&ntstdio, "[NTP CLI,%d] sleep %d.%03u[s], unknown host.",
    319322                                nc->cepid, SLP_ITV / SYSTIM_HZ, SLP_ITV % SYSTIM_HZ);
    320323                        nc->timer = SLP_ITV;
     
    420423
    421424        if ((error = udp_snd_dat(nc->cepid, &nc->snd_rmt, ntp, len, TMO_NBLK)) != E_WBLK) {
    422                 syslog(LOG_NOTICE, "[NTP CLI,%d] udp_snd_dat error: %s",
     425                ntstdio_printf(&ntstdio, "[NTP CLI,%d] udp_snd_dat error: %s",
    423426                        nc->cepid, itron_strerror(error));
    424427                return error;
     
    438441        ret = get_tim(&time);
    439442        if (ret != E_OK) {
    440                 syslog(LOG_NOTICE, "[NTP CLI,%d] get_tim error: %s",
     443                ntstdio_printf(&ntstdio, "[NTP CLI,%d] get_tim error: %s",
    441444                        nc->cepid, itron_strerror(ret));
    442445                tp->tv_sec = 0;
     
    458461        ret = set_tim(time);
    459462        if (ret != E_OK) {
    460                 syslog(LOG_NOTICE, "[NTP CLI,%d] set_tim error: %s",
     463                ntstdio_printf(&ntstdio, "[NTP CLI,%d] set_tim error: %s",
    461464                        nc->cepid, itron_strerror(ret));
    462465        }
     
    476479        if (len < 0 && len != E_RLWAI) {
    477480                /* E_RLWAI 以外で、0 以下の場合は、エラーを意味している。*/
    478                 syslog(LOG_NOTICE, "[NTP CLI,%d] callback error: %s, fncd: %s", nc->cepid,
     481                ntstdio_printf(&ntstdio, "[NTP CLI,%d] callback error: %s, fncd: %s", nc->cepid,
    479482                        itron_strerror(len), in_strtfn(fncd));
    480483        }
     
    483486                        if ((len = udp_rcv_dat(nc->cepid, &nc->rcv_rmt, &nc->ntp_msg, len, TMO_POL)) < 0)
    484487                        {
    485                                 syslog(LOG_NOTICE, "[NTP CLI,%d] udp_rcv_dat error: %s", nc->cepid,
     488                                ntstdio_printf(&ntstdio, "[NTP CLI,%d] udp_rcv_dat error: %s", nc->cepid,
    486489                                        itron_strerror(len));
    487490                        }
     
    515518
    516519        get_tid(&nc->tskid);
    517         syslog(LOG_NOTICE, "[NTP CLI:%d,%d] started.", nc->tskid, (ID)exinf);
     520        ntstdio_printf(&ntstdio, "[NTP CLI:%d,%d] started.", nc->tskid, (ID)exinf);
    518521
    519522        /* 初期化 */
     
    522525        ret = get_tim(&time);
    523526        if (ret != E_OK) {
    524                 syslog(LOG_NOTICE, "[NTP CLI,%d] get_tim error: %7lu,%s",
     527                ntstdio_printf(&ntstdio, "[NTP CLI,%d] get_tim error: %7lu,%s",
    525528                        nc->cepid, time / SYSTIM_HZ, itron_strerror(ret));
    526529                return;
     
    536539                error = tslp_tsk(timer);
    537540                if ((error != E_OK) && (error != E_TMOUT)) {
    538                         syslog(LOG_NOTICE, "[NTP CLI,%d] tslp_tsk error: %s %d",
     541                        ntstdio_printf(&ntstdio, "[NTP CLI,%d] tslp_tsk error: %s %d",
    539542                                nc->cepid, itron_strerror(error), timer);
    540543                        break;
     
    543546                ret = get_tim(&time);
    544547                if (ret != E_OK) {
    545                         syslog(LOG_NOTICE, "[NTP CLI,%d] get_tim error: %s",
     548                        ntstdio_printf(&ntstdio, "[NTP CLI,%d] get_tim error: %s",
    546549                                nc->cepid, itron_strerror(ret));
    547550                        break;
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/ntp_cli.cfg

    r340 r359  
    3333 *  の責任を負わない.
    3434 *
    35  *  @(#) $Id: ntp_cli.cfg 1496 2018-04-12 11:59:40Z coas-nagasima $
     35 *  @(#) $Id$
    3636 */
    3737
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/ntp_cli.h

    r340 r359  
    3333 *  の責任を負わない.
    3434 *
    35  *  @(#) $Id: ntp_cli.h 1496 2018-04-12 11:59:40Z coas-nagasima $
     35 *  @(#) $Id$
    3636 */
    3737
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/syscall.c

    r349 r359  
    3333 *  の責任を負わない.
    3434 *
    35  *  @(#) $Id: syscall.c 1530 2018-04-27 04:00:17Z coas-nagasima $
     35 *  @(#) $Id$
    3636 */
    3737#include "bits/syscall.h"
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/tinet_ntp_cli.cfg

    r340 r359  
    2929 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    3030 *
    31  *  @(#) $Id: tinet_ntp_cli.cfg 1291 2017-07-20 02:51:05Z coas-nagasima $
     31 *  @(#) $Id$
    3232 */
    3333
  • asp3_tinet_ecnl_rx/trunk/wolfssl-3.12.2/wolfcrypt/src/aes.c

    r337 r359  
    36183618
    36193619
    3620 /* Figure 9. AES-GCM - Encrypt With Single Block Ghash at a Time */
     3620/* Figure 9. AES-GCM Encrypt With Single Block Ghash at a Time */
    36213621
    36223622static const __m128i ONE   = M128_INIT(0x0, 0x1);
     
    50175017
    50185018#ifdef HAVE_AES_DECRYPT
    5019 /* Figure 10. AES-GCM - Decrypt With Single Block Ghash at a Time */
     5019/* Figure 10. AES-GCM Decrypt With Single Block Ghash at a Time */
    50205020
    50215021static int AES_GCM_decrypt(const unsigned char *in, unsigned char *out,
Note: See TracChangeset for help on using the changeset viewer.