I've been in the "project ended, next one not starting yet, gotta do something" situation. You do not want to look like you're expendable, so it's important both to be doing something and to communicate clearly and unambiguously.
On the first, if you have no assigned work and haven't been able to make progress with your manager, you should be looking for productive things to do that never seem to get done because "we don't have time". You have time -- great, use it. I've used times like this to document things that aren't written down anywhere, to refactor work that's "safe" to refactor (don't do this in the upcoming release's branch...), to add automation, to organize things better on the wiki, to improve test suites... what you do depends on what your team/company needs, but look around and you'll surely find something.
Now it would have been better to send email earlier, but you are where you are. Send email now to your reporting manager and, if different, the person who makes decisions about your performance reviews, salary, and continued employment. This email should do three things:
Refer to the previous conversations and outcomes. Include here your understanding of the current situation, particularly anything you've been told about your next assignment (or in your case, that you don't know what and when that is).
Explain what you are doing now. You want this information to be in people's hands before anybody starts wondering "hey, Hitesh doesn't have a project... has he been goofing on on the Internet or what?". Pre-empt that thought.
Ask if these are the right priorities -- is there something else you should be spending the time on instead?
To the reporting manager this is not news, but it might be news to anybody else who's involved (depending on how functional communication at your company or in your group is). The person who decides your fate needs to see that you're being proactive, that you're trying to do something about it, and that you're asking for guidance.