https://bitbucket.org/hudson/magic-lantern
Tip revision: 61838146a23b642b0e59b55bfc68b13acb9d4e77 authored by a1ex on 22 June 2014, 12:13:23 UTC
Close branch edmac-cleanup
Close branch edmac-cleanup
Tip revision: 6183814
tweaks-eyefi.c
/**\file
* EyeFi Tricks (EyeFi confirmed working only on 600D-60D)
*/
#include "tweaks-eyefi.h"
#ifdef FEATURE_EYEFI_TRICKS
int check_eyefi()
{
FILE * f = FIO_OpenFile("EYEFI/REQC", 0);
if (f != (void*) -1)
{
FIO_CloseFile(f);
return 1;
}
return 0;
}
void EyeFi_RenameCR2toAVI(char* dir)
{
struct fio_file file;
struct fio_dirent * dirent = FIO_FindFirstEx( dir, &file );
if( IS_ERROR(dirent) )
return;
do {
if (file.mode & 0x10) continue; // is a directory
if (file.name[0] == '.') continue;
if (!streq(file.name + 8, ".CR2")) continue;
static char oldname[50];
static char newname[50];
snprintf(oldname, sizeof(oldname), "%s/%s", dir, file.name);
strcpy(newname, oldname);
newname[strlen(newname) - 4] = 0;
STR_APPEND(newname, ".AVI");
bmp_printf(FONT_LARGE, 0, 0, "%s...", newname);
FIO_RenameFile(oldname, newname);
} while( FIO_FindNextEx( dirent, &file ) == 0);
FIO_FindClose(dirent);
beep();
redraw();
}
void EyeFi_RenameAVItoCR2(char* dir)
{
struct fio_file file;
struct fio_dirent * dirent = FIO_FindFirstEx( dir, &file );
if( IS_ERROR(dirent) )
return;
do {
if (file.mode & 0x10) continue; // is a directory
if (file.name[0] == '.') continue;
if (!streq(file.name + 8, ".AVI")) continue;
static char oldname[50];
static char newname[50];
snprintf(oldname, sizeof(oldname), "%s/%s", dir, file.name);
strcpy(newname, oldname);
newname[strlen(newname) - 4] = 0;
STR_APPEND(newname, ".CR2");
bmp_printf(FONT_LARGE, 0, 0, "%s...", newname);
FIO_RenameFile(oldname, newname);
} while( FIO_FindNextEx( dirent, &file ) == 0);
FIO_FindClose(dirent);
beep();
redraw();
}
static void CR2toAVI(void* priv, int delta)
{
EyeFi_RenameCR2toAVI((char*)get_dcim_dir());
}
static void AVItoCR2(void* priv, int delta)
{
EyeFi_RenameAVItoCR2((char*)get_dcim_dir());
}
#ifdef FEATURE_EYEFI_RENAME_422_MP4
void EyeFi_Rename422toMP4(char* dir)
{
struct fio_file file;
struct fio_dirent * dirent = FIO_FindFirstEx( dir, &file );
if( IS_ERROR(dirent) )
return;
do {
if (file.mode & 0x10) continue; // is a directory
if (file.name[0] == '.') continue;
if (!streq(file.name + 8, ".422")) continue;
static char oldname[50];
static char newname[50];
snprintf(oldname, sizeof(oldname), "%s/%s", dir, file.name);
strcpy(newname, oldname);
newname[strlen(newname) - 4] = 0;
STR_APPEND(newname, ".MP4");
bmp_printf(FONT_LARGE, 0, 0, "%s...", newname);
FIO_RenameFile(oldname, newname);
} while( FIO_FindNextEx( dirent, &file ) == 0);
FIO_FindClose(dirent);
beep();
redraw();
}
void EyeFi_RenameMP4to422(char* dir)
{
struct fio_file file;
struct fio_dirent * dirent = FIO_FindFirstEx( dir, &file );
if( IS_ERROR(dirent) )
return;
do {
if (file.mode & 0x10) continue; // is a directory
if (file.name[0] == '.') continue;
if (!streq(file.name + 8, ".MP4")) continue;
static char oldname[50];
static char newname[50];
snprintf(oldname, sizeof(oldname), "%s/%s", dir, file.name);
strcpy(newname, oldname);
newname[strlen(newname) - 4] = 0;
STR_APPEND(newname, ".422");
bmp_printf(FONT_LARGE, 0, 0, "%s...", newname);
FIO_RenameFile(oldname, newname);
} while( FIO_FindNextEx( dirent, &file ) == 0);
FIO_FindClose(dirent);
beep();
redraw();
}
static void f422toMP4(void* priv, int delta)
{
EyeFi_Rename422toMP4(get_dcim_dir());
}
static void MP4to422(void* priv, int delta)
{
EyeFi_RenameMP4to422(get_dcim_dir());
}
#endif // FEATURE_EYEFI_RENAME_422_MP4
static struct menu_entry eyefi_menus[] = {
{
.name = "EyeFi Trick",
.select = menu_open_submenu,
.help = "Rename CR2 files to AVI (trick for EyeFi cards).",
.children = (struct menu_entry[]) {
{
.name = "Rename CR2 to AVI",
.select = CR2toAVI,
.help = "Rename CR2 files to AVI (trick for EyeFi cards)."
},
{
.name = "Rename AVI to CR2",
.select = AVItoCR2,
.help = "Rename back AVI files to CR2 (trick for EyeFi cards)."
},
#ifdef FEATURE_EYEFI_RENAME_422_MP4
{
.name = "Rename 422 to MP4",
.select = f422toMP4,
.help = "Rename 422 files to MP4 (trick for EyeFi cards)."
},
{
.name = "Rename MP4 to 422",
.select = MP4to422,
.help = "Rename back MP4 files to 422 (trick for EyeFi cards)."
},
#endif
MENU_EOL
},
},
};
static void eyefi_tweak_init()
{
if (check_eyefi()) {
menu_add( "Shoot", eyefi_menus, COUNT(eyefi_menus) );
}
}
INIT_FUNC(__FILE__, eyefi_tweak_init);
#endif // FEATURE_EYEFI_TRICKS