Towards next generation human-computer interaction -- brain-computer interfaces: applications and challenges